System.InvalidOperationException:“调用线程必须为 STA,因为许多 UI 组件都需要。” 这个异常通常发生在尝试在非单线程单元(STA,Single-Threaded Apartment)线程中访问某些 UI 组件时。在 .NET 中,许多 UI 框架(如 Windows Forms 和 WPF)要求与其交互的线程必须是 STA 线程。这是因为这些 UI 框架不是线程安全的...
后台代码不能直接操作UI控件,需要控制,就要通过这个Dispatcher。 类库程序不需要使用Dispatcher,而是页面需要程序的时候使用Dispatcher 方式一: Application.Current.Dispatcher.Invoke((Action)(() => { code })); 方式二: Action action1 = () => { }; documentList[friendId].Dispatcher.BeginInvoke(action1); ...
异常: 引发了异常: PresentationCore.dll 中的“System.InvalidOperationException”(“调用线程必须为 STA,因为许多 UI 组件都需要。”)。引发了异常: PresentationCore.dll 中的“System.InvalidOperationException”(“调用线程必须为 STA,因为许多 UI 组件都需要。”) 引起异常就下这句: titleLab.Content = "通话中...
默认情况下,ASP.NET 不允许任何 STA COM 组件在页面内运行。若要运行它们,必须在 .aspx 文件内将 ...
调用线程必须为STA,因为许多UI组件都需要。 Thread NetServer = new Thread(new ThreadStart(NetServerThreadFunc)); NetServer.Start(); WPF工程里,此线程不可以操作UI元素,如果在线程中调用了UI处理,则会弹出如上错误。避免方法如下: 1、public delegate void DeleFunc();...
通常,如果编写测试很困难,这表明代码应该设计得更好。
WPF中,代码中准备控制控件内容时,有时会报错:“ 调用线程必须为 STA,因为许多 UI 组件都需要 ”。 如在winform下面,使用多线程时,控件的值读取是可以的,但如果要更改,那么就必须进行一些特别的处理。WPF中也一样。 首先,WPF中,当报上面那个错误时,代码可以改成类似以下: ...
1、public delegate void DeleFunc(); public void Func() { //使用ui元素 } 线程函数中做如此调用: System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new DeleFunc(Func)); 即可。 2、 Thread NetServer = new Thread(new ThreadStart(NetServerThreadFunc...
1、public delegate void DeleFunc(); public void Func() { //使用ui元素 } 线程函数中做如此调用: System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new DeleFunc(Func)); 即可。 2、 Thread NetServer = new Thread(new ThreadStart(NetServerThreadFunc...
WPF中,代码中准备控制控件内容时,有时会报错:“ 调用线程必须为 STA,因为许多 UI 组件都需要 ”。 如在winform下面,使用多线程时,控件的值读取是可以的,但如果要更改,那么就必须进行一些特别的处理。WPF中也一样。 首先,WPF中,当报上面那个错误时,代码可以改成类似以下: ...