ご挨拶、私はC#でいくつかのアプリケーションを開発しています。現在、私は糸脱毛を扱っていますが、頭に浮かぶ質問があります。InvokeとBeginInvokeの違いは何ですか?私はいくつかのスレッドを読みました、そして私はここでいくつかの有用な情報を見つけました:ここに
ただし、次のコードのInvokeとBeginInvokeの違いは何ですか。
private void ProcessRoutine()
{
for (int nValue = StartFrom; nValue <= EndTo; nValue++)
{
this.Invoke(this.MyDelegate, nValue);
//this.BeginInvoke(this.MyDelegate, nValue);
}
MessageBox.Show("Counting complete!");
}
private void MessageHandler(int progress)
{
lblStatus.Text = lblStatus.Text = "Processing item: " + progress.ToString();
progressBar1.Value = progress;
}
ここで、MyDelegateはMessageHandler関数への参照です。
BeginInvoke lblStatus.Textを使用しても、Invokeを使用するとラベルが更新されるのに対し、Textは更新されないことに気付きました。さらに、Invokeは実行が完了するのを待つことを知っています。私が興味を持っている最も重要なケースは、この場合、ラベルテキストの更新に違いがある理由です。