gpt4 book ai didi

delegates - C# : this. 调用((MethodInvoker)委托(delegate)

转载 作者:行者123 更新时间:2023-12-02 23:44:49 27 4
gpt4 key购买 nike

有人可以解释一下下面的代码吗:

                this.Invoke((MethodInvoker)delegate
{
lblNCK.Text = cncType;
});

这是它的来源:

        string cncType;

if (objDMainCncData != null)
{
int rc = objDMainCncData.Init(objDGroupManager.Handle);

if (rc == 0)
{
cncType = objDMainCncData.GetCncIdentifier();

if (cncType != string.Empty)
{
if (cncType.ToUpper().IndexOf("+") != -1)
_bFXplus = true;

this.Invoke((MethodInvoker)delegate
{
lblNCK.Text = cncType;
});
}
}
else
{
DisplayMessage("objDMainCncData.Init() failed ! error : " + rc.ToString());
}
}
}

我没有使用“this.Invoke((MethodInvoker)delegate”。

提前谢谢您。

彼得.

最佳答案

奇怪的是没有人回答这个问题。

让我们把它分成几部分:

this.Invoke:这是一种同步机制,包含在所有控件中。所有图形/GUI 更新只能从 GUI 线程执行。 (这很可能是主线程。)因此,如果您有其他线程(例如工作线程、异步函数等)将导致 GUI 更新,则需要使用 Invoke。否则程序就会崩溃。

delegate{ ... }:这是一个匿名函数。您可以将其视为“动态创建函数”。 (不要在代码中查找空格,而是创建函数名称、参数等)

(MethodInvoker):MethodInvoker 只是 Invoke 所期望的委托(delegate)的名称。例如。 Invoke 期望获得一个函数,其签名与“MethodInvoker”函数相同。

发生的情况是,Invoke 被赋予一个函数指针。它通过互斥锁唤醒 GUI 线程并告诉它执行函数(通过函数指针)。然后父线程等待GUI线程完成执行。一切都完成了。

关于delegates - C# : this. 调用((MethodInvoker)委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36471563/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com