首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wpf中的InvokeRequired

wpf中的InvokeRequired
EN

Stack Overflow用户
提问于 2013-03-20 00:17:36
回答 4查看 54.2K关注 0票数 34

我在一个Windows forms应用程序中使用了这个函数:

代码语言:javascript
复制
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中,它不起作用。为什么?

EN

回答 4

Stack Overflow用户

发布于 2013-03-20 00:21:14

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

代码语言:javascript
复制
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();
}
票数 66
EN

Stack Overflow用户

发布于 2013-03-20 00:19:50

在WPF中,使用CheckAccess方法而不是InvokeRequired方法

代码语言:javascript
复制
if (!CheckAccess()) { 
  // On a different thread
  Dispatcher.Invoke(() => log_left_accs(arg));
  return;
}
票数 21
EN

Stack Overflow用户

发布于 2013-03-20 00:19:24

检查Dispatcher.CheckAccess()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15504826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档