调用线程必须为STA,因为许多UI组件都需要。

Thread NetServer = new Thread(new ThreadStart(NetServerThreadFunc));
NetServer.Start();


  WPF工程里,此线程不可以操作UI元素,如果在线程中调用了UI处理,则会弹出如上错误。避免方法如下:


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));
     NetServer .SetApartmentState(ApartmentState.STA);
     NetServer .IsBackground = true;

     NetServer.Start();

     线程函数中做如此调用:

System.Windows.Threading.Dispatcher.Run();
    即可。


你可能感兴趣的:(线程,UI组件,STA)