调用和<控制>之间的区别.调用

本文关键字:调用 区别 之间 控制 | 更新日期: 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 异常错误。

如果您的控制由于deletenull,那么您将获得 NRE。