另一种使用Dispatcher.CheckAccess的方法?

时间:2014-01-23 16:11:16

标签: c# wpf dispatcher

我是WPF的新手。

代码1:

      if (!Dispatcher.CheckAccess())
            {

                if (ab == "abc")
                {
                    Dispatcher.Invoke( () =>
                    lab1.Visibility = Visibility.Visible

                    , DispatcherPriority.Normal);

                }
            }

在上面的代码中我只想更改Label上的可见性。

但是有这样的多个变化......

代码2:

      if (!Dispatcher.CheckAccess())
            {

                if (ab == "abc")
                {
                    Dispatcher.Invoke( () =>
                    lab1.Visibility = Visibility.Visible

                    lab2.Visibility = Visibility.Hidden

                    lab3.Visibility = Visibility.Hidden

                    , DispatcherPriority.Normal);

                }
            }

它不起作用,那么任何人都可以帮我解释如何调用多个实例吗?

1 个答案:

答案 0 :(得分:1)

我希望你的代码没有编译。你应该改变你的调度员:

Dispatcher.Invoke( new Action( () =>
     {
         lab1.Visibility = Visibility.Visible;
         lab2.Visibility = Visibility.Hidden;
         lab3.Visibility = Visibility.Hidden;
     } ) );

Dispatcher用于将来自不同线程的项目分派到UI线程上。 CheckAccess()将检查您是否在Dispatcher线程(或UI线程)上。如果您已经存在,则不会进入您的if语句。你绝对确定你已经不在Dispatcher主题吗?