WPF线程调用UI元素
Posted lskfighting
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF线程调用UI元素相关的知识,希望对你有一定的参考价值。
WPF开发中MVVM模式下,通过线程调用UI元素会报错,提示“调用线程必须为 STA,因为许多 UI 组件都需要。”。
解决方法有两个:
一、
public delegate void DeleFunc(); public void Func() { //要调用的UI元素 } System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new DeleFunc(Func));
二、
Thread NetServer = new Thread(new ThreadStart(NetServerThreadFunc)); NetServer .SetApartmentState(ApartmentState.STA); NetServer .IsBackground = true; NetServer.Start();
System.Windows.Threading.Dispatcher.Run();
但是,如果是全屏界面,通过第二种方法调用出子窗体时Windows系统的任务栏也会显示,推荐使用第一种。
以上是关于WPF线程调用UI元素的主要内容,如果未能解决你的问题,请参考以下文章
WPF 之 调用线程必须为 STA,因为许多 UI 组件都需要
在具有 ui/非 ui 线程差异的 WPF 中使用 PInvoke