DataGridView.Invoke throws NullReferenceException

本文关键字:NullReferenceException throws Invoke DataGridView | 更新日期: 2023-09-27 18:34:35

我对 DataGridView.Invoke 有问题。

delegate void CheckMainTableCallback();
static void CheckMainTable()
{
    if (Program.MonitorApp.ServersTable.InvokeRequired)
    {
        CheckMainTableCallback Safe = new CheckMainTableCallback(CheckMainTable);
        MonitorApp.ServersTable.Invoke(Safe);
    }
    else
    {
        foreach (DataGridViewRow r in MonitorApp.MainTable.Rows)
        {
            **r.Cells["Load"].Value = 
                (Servers.Find(
                    p => p.NAME == r.Cells[0].ToString()
                )
                .GetSystemValue("% Proccess Usage"));** // exception here
        }
    }
}

所以我调用 CheckMainTable 从 ServersTable 获取值(由另一个线程使用(到我的 MainTable。并抛出空引用。我做错了什么?

DataGridView.Invoke throws NullReferenceException

因此,跟踪这样的异常是一个逐个的过程。考虑以下事实:这行代码:

r.Cells[0].ToString()

如果r.Cells[0]null,可以扔.

此外,如果Servers.Find(...的结果null.GetSystemValue会抛出.