私は、Windowsフォームアプリケーションのスレッドに関する何かを学ぶためにTestboxを構築しました。 SilverlightとJavaがDispatcherを提供しています。これは、 GUI要素の更新時に本当に役立ちます。C#でのデリゲートの構文の問題
コードサンプル: 宣言クラスの委任
public delegate void d_SingleString(string newText);
作成スレッド
_thread_active = true;
Thread myThread = new Thread(delegate() { BackGroundThread(); });
myThread.Start();
スレッド関数
private void BackGroundThread()
{
while (_thread_active)
{
MyCounter++;
UpdateTestBox(MyCounter.ToString());
Thread.Sleep(1000);
}
}
委任のTextBoxアップデート
public void UpdateTestBox(string newText)
{
if (InvokeRequired)
{
BeginInvoke(new d_SingleString(UpdateTestBox), new object[] { newText });
return;
}
tb_output.Text = newText;
}
BeginInvokeメソッドでDelate Declarationを宣言する方法はありますか?あなたは、フレームワークからAction<T>
デリゲート(link to msdn)を使用することができ、このような単純な代表団のために
BeginInvoke(*DELEGATE DECLARATION HERE*, new object[] { newText });
多くのおかげで、 rAyt
あなたのeloborationマークを愛してください。ちょうど10分MSDNを読むより多くを学んだ:) –
シングルスレッドのアパートの驚異... – Spence
非常にエレガントなソリューション、それは本当にこの質問のための受け入れられた答えであるべきです。 –