>>125
では、今回のように別スレッドからBeginInvokeなどが連続して呼ばれて結果的にビジーループ
のようになってしまうような処理の場合、どのようにしてイベントを処理すればいいのでしょうか?
タイマーの精度をあきらめる(そもそも無茶らしいですが)として、

while (!abort)
{
while (doEvent && !abort)
{
Thread.Sleep(1);
}

...

Thread.Sleep(1);
}

としてもTickの内容が重たいとビジーループになってしまうのですが…

ここまでするくらいならSystem.Windows.Forms.Timerかなんかを使ってTickで処理時間分Intervalから引いていった方が
いいような気もしますがw