我开发了一个 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 ++;
}
}));
}