お世話になります。
非同期処理でUIにアクセスするさいにBeginInvokeを使っているのですが
回転数が少なく条件にマッチしない場合BeginInvokeの方が先に終わってしまうのか
labelの方は100000と書いてあるのに終了のメッセージボックスがしばらくしないと出ない感じに
なってしまいます。。


Taskスタートのつもり
{
for (j = 0; j <10000; j++)
{
メソッド1(j);
bool flg=メソッド2(j);
if (flg) this.Invoke(new Action(() => HITLabel.Text = "hiT"));
this.BeginInvoke(new Action(() =>進行Label.Text=j+1.ToString()));//
}

//ループ終了 
});

MessageBox.Show("完了せり");

とこんな感じでかなりあれなんですが・・・
Invokeにすれば同期できるんですが終了待ちする関係で
時間が掛かってしまい3秒くらい追加になってしまうようです。
BeginInvokeを使いループ終了と同期させる方法がないでしょうか?
200万ぐらいから同期するみたいなんですが。