Two UI Thread in C# windows Application

前端 未结 3 1632
长发绾君心
长发绾君心 2020-12-18 09:22

How can I implement two ui threads in a C# windows application?

3条回答
  •  一整个雨季
    2020-12-18 09:33

    You need to call Thread.SetApartmentState() to switch the thread to STA before starting it. And pump a message loop to keep any windows created on that thread alive, Application.Run(). Application.ExitThread() will terminate the message loop and cause the thread to exit. Using Run(Form) makes that automatic, just as it does on the main thread.

    Beware however that the user may well have a hard time dealing with the windows you create on that thread. They have no Z-order relationship with the windows in the main thread, the desktop is their parent. That tends to make them easily get lost behind another window, including your own. Awkward workarounds for that are TopMost and pinvoking SetParent().

提交回复
热议问题