Winforms 应用程序。后台线程从 MQ 检索消息并在 UI 线程上进行更改。
我需要调用此方法来更新自定义列表
private void UpdateList()
{
if (ctrlLabel.IsHandleCreated)
{
ctrlLabel.Invoke(new Action(() =>
{
//Do Something
}
));
}
ctrlListView.Data = package;
//MARK
ctrlListView.Invoke(new Action(() =>
{
ctrlListView.LoadData();
}
));
//MARK
}
此方法由后台线程调用两次。但是,这适用于新实例化控件后的第一次调用。
在删除项目时,当我尝试刷新时,出现 Null Exception Errors 错误。
有趣的是,我能够通过一些小的修改来运行它。我将 [Control].Invoke 更改为仅 Invoke,它可以正常工作(仅用于第二次调用)
//MARK
Invoke(new Action(() =>
{
ctrlListView.LoadData();
}
));
//MARK
那么,Invoke 和 [control].Invoke 在操作上有何不同?
见于 Win7、.Net 4.0