Windowsフォームのc#アプリケーションを開発しました。GUIフォームをブロックせずに別のスレッドをスピンオフして、メインフォームのリストボックスの項目を更新したいだけです。スレッドはリストボックスのようなフォームエンティティにアクセスできないため、デリゲートを使用することを考えました。以下のコードは、デリゲートを使用してそのタスクを実行する方法を示していますが、GUIフォームがブロックされています。だから私はそれをGUIフォームをブロックせずにリストボックスを更新する非同期デリゲートに変換したいだけです
デリゲート宣言
delegate void monitoringServiceDel();
代理人に電話する
new monitoringServiceDel(monitoringService).BeginInvoke(null, null);
デリゲートメソッドの実装
private void monitoringService()
{
this.listEvents.Invoke(new MethodInvoker(delegate()
{
int i = 0 ;
while (i<50)
{
listEvents.Items.Add("count :" + count++);
Thread.Sleep(1000);
i ++;
}
}));
}