Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
696 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 Reply

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...