Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
657 views
in Technique[技术] by (71.8m points)

winforms - Two UI Thread in C# windows Application

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

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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().


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
...