gpt4 book ai didi

c# - 将 C# MethodInvoker.Invoke() 用于 GUI 应用程序……这样好吗?

转载 作者:IT王子 更新时间:2023-10-29 04:18:47 24 4
gpt4 key购买 nike

使用 C# 2.0 和 MethodInvoker 委托(delegate),我有一个 GUI 应用程序从 GUI 线程或工作线程接收一些事件。

我使用以下模式处理表单中的事件:

private void SomeEventHandler(object sender, EventArgs e)
{
MethodInvoker method = delegate
{
uiSomeTextBox.Text = "some text";
};

if (InvokeRequired)
BeginInvoke(method);
else
method.Invoke();
}

通过使用这种模式,我不会复制实际的 UI 代码,但我不确定这种方法是否好。

特别是行

method.Invoke()

它是使用另一个线程进行调用还是在某种程度上转换为直接调用 GUI 线程上的方法?

最佳答案

method.Invoke() 调用在当前执行线程上执行委托(delegate)。使用 BeginInvoke(method) 确保委托(delegate)在 GUI 线程上被调用。

当可以从 GUI 线程和其他线程调用相同的方法时,这是避免代码重复的正确方法。

关于c# - 将 C# MethodInvoker.Invoke() 用于 GUI 应用程序……这样好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/782274/

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