c# - 在 wpf 中调用 Required

标签 c# wpf winforms invokerequired

<分区>

我在 Windows 窗体 应用程序中使用了这个函数:

delegate void ParametrizedMethodInvoker5(int arg);

private void log_left_accs(int arg)
{
    if (InvokeRequired) 
    {
        Invoke(new ParametrizedMethodInvoker5(log_left_accs), arg);
        return;
    }

    label2.Text = arg.ToString();
}

但在 WPF 中它不起作用。为什么?

最佳答案

在 WPF 中,Invoke 方法在调度程序上,因此您需要调用 Dispatcher.Invoke 而不是 Invoke。此外,没有 InvokeRequired 属性,但调度程序有一个 CheckAccess 方法(出于某种原因,它隐藏在智能感知中)。所以你的代码应该是:

delegate void ParametrizedMethodInvoker5(int arg);
void log_left_accs(int arg)
{
    if (!Dispatcher.CheckAccess()) // CheckAccess returns true if you're on the dispatcher thread
    {
        Dispatcher.Invoke(new ParametrizedMethodInvoker5(log_left_accs), arg);
        return;
    }
    label2.Text= arg.ToString();
}

关于c# - 在 wpf 中调用 Required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15504826/

相关文章:

c# - 从 JObject 中提取值

c# - 从项目目录加载 XML 文件

c# - 未收集内存

c# - 强密码的正则表达式

c# - System.ArgumentNullException:值不能为null。 (参数 'connectionString')asp.net Core Docker-compose

c# - 任何内置方法只知道两个列表是否不同?

c# - 为什么我在 RestSharp 中的初始调用真的很慢?但其他人之后非常快

c# - Windows 窗体设计 View 的底部空间是什么?

c# - 在 Windows 窗体中的文本标签中输入 "&"符号?

c# - .NET GZipStream 解压缩生成空流