ボタン形式のチェックボックスをつくって、
それを押すとMyHeavyTask()をUIスレッドとは別スレッドで処理するようにしています。
bool型のstart変数がfalseになったらMyHeavyTask()を特定のキリのいい場所で停止
するようにしているのですが、このような処理ですとパラメータ次第では
そのキリのいい場所に行くまでに相当時間がかかってしまって困っています。
かといって、そのキリのいい場所をループ処理の深いところ(頻繁にやってくるところ)
にするというのもMyHeavyTask()の処理効率を落としてしまうので避けたいです。
そこで質問なのですが、UIスレッド以外のスレッドをすべて停止させるような処理を記述
することは可能でしょうか?

private async void start_CheckBox_CheckedChanged(object sender, EventArgs e)
{
if (start_CheckBox.Checked)
{
start_CheckBox.Text = "Stop";
start = true;
await Task.Run(() =>
{
MyHeavyTask();
});
start_CheckBox.Checked = false;
}
else
{
start_CheckBox.Text = "Start";
start = false;
}
}