デリゲートを使ったプログラムで、デリゲート内で行われる処理を、

while( true )
{
  hoge();
}

として、それを外部から強制的に終了させるにはどうしたらいい?
スタートボタンでデリゲートを生成して処理を開始、エンドボタンでデリゲートを破棄して処理を終了。
といった具合にしたい。
エンドボタンが押されるのに応じて EndInvoke を読んだら普通に例外投げられた。