调用和<控制>之间的区别.调用
本文关键字:调用 区别 之间 控制 | 更新日期: 2023-09-27 17:56:41
WinForms Application.后台线程从 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
}
此方法两次都由后台线程调用。但是,这适用于控件刚实例化后的第一次调用。
在删除项目时,当我尝试刷新时,此错误并显示空异常错误。
有趣的是,我能够通过一些小的修改来运行它。我更改了 [控件]。调用到只调用,它有效(仅用于第二次调用)
//MARK
Invoke(new Action(() =>
{
ctrlListView.LoadData();
}
));
//MARK
那么,如何调用和[控制]。调用操作不同?
在Win7,.Net 4.0上看到
特定于
该特定控件的[control].Invoke
调用,如果使用Invoke
则它引用当前形式this
。
所以:
Invoke(new Action(() => ....
以上等于:
this.Invoke(new Action(() => ....
其中this
是当前表单。
在删除项目时,当我尝试刷新时,此错误为 Null 异常错误。
如果您的控制由于delete
而null
,那么您将获得 NRE。