C# 调用和<;控制>;。援引
Winforms应用程序。后台线程从MQ检索消息并在UI线程上进行更改 我需要调用此方法来更新自定义列表C# 调用和<;控制>;。援引,c#,winforms,C#,Winforms,Winforms应用程序。后台线程从MQ检索消息并在UI线程上进行更改 我需要调用此方法来更新自定义列表 private void UpdateList() { if (ctrlLabel.IsHandleCreated) { ctrlLabel.Invoke(new Action(() => { //Do Something
private void UpdateList()
{
if (ctrlLabel.IsHandleCreated)
{
ctrlLabel.Invoke(new Action(() =>
{
//Do Something
}
));
}
ctrlListView.Data = package;
//MARK
ctrlListView.Invoke(new Action(() =>
{
ctrlListView.LoadData();
}
));
//MARK
}
后台线程两次都调用此方法。但是,这适用于新实例化控件后的第一次调用
在删除项目时,当我尝试刷新时,此错误将以Null异常错误显示
有趣的是,我只做了一些小的修改就可以运行它。我将[Control].Invoke更改为仅调用,并且它可以工作(仅用于第二次调用)
那么,Invoke和[control].Invoke在操作上有什么不同呢
在Win7.Net 4.0上可以看到,.Net 4.0
[control]。调用特定于该特定控件的
调用,如果使用调用,则它指的是当前表单
因此:
上述各项等于:
this.Invoke(new Action(() => ....
其中此
为当前表单
在删除项目时,当我尝试刷新时,此错误将以Null显示
异常错误
如果由于delete
而使控件为null
,则将获得NRE
Invoke(new Action(() => ....
this.Invoke(new Action(() => ....