C#windows应用中的两个UI线程如何在C#windows应用中实现两个ui线程?在开始之前,需要调用Thread.SetApartmentState()将线程切换到STA。并使用消息循环来保留在该线程Application.Run()上创建的任何窗口。Application.ExitThread()将终止消息循环并导致线程退出。使用Run(Form)使其自动化,就像在主线程上一样。但请注意,用户可能难以处理您在该线程上创建的窗口。它们与主线程中的窗口没有Z顺序关系,桌面是它们的父级。这往往会让他们很容易迷失在另一个窗户后面,包括你自己的窗户。尴尬的解决方法是TopMost和pinvokingSetParent()。这可能不是答案,而是更多的解释。如果允许两个线程同时访问同一个像素——这是多线程UI的结果——你需要在线程之间进行某种同步。如果线程不同步,应该如何确定像素的颜色?所以我们必须添加锁定。锁定每个像素的成本非常高,因此我们很快转向锁定每个控件或每个窗口。好了:通过允许1个且仅1个线程访问UI,我们实现了锁定。顺便说一句:用控件或控件树替换像素;这不仅仅是像素共享数据,无论是像素还是控件。在新线程中调用Application.Run(...),这将打开带有自己的消息循环的表单。以上就是C#学习教程:C#windows应用中两个UI线程共享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——newThread(()=>Application.Run(someForm)).Start();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
