我是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);
}
}
它不起作用,那么任何人都可以帮我解释如何调用多个实例吗?
答案 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
主题吗?