我刚刚开始处理STA/MTA问题,所以很抱歉这个问题很简单。在这里,我找不到真正能理解的答案。
我正在为另一款软件编写一个插件,在一个工作线程中,我需要创建一些UI元素。我知道我不能在工作线程内部这样做,因为它不是STA线程,我需要回到主线程(或者仅仅是另一个线程?)用于创建UI元素的STA线程。一些澄清将有很大帮助。
请不要,这是一种很酷的、光滑的方法.我只需要一种简单的方法,在执行的时候,我需要一些UI元素,如果这是必要的话,我需要跳回主要STA线程。
如果没有必要的话,我就把那个工作线程变成STA线程,然后继续我的工作,这样公平吗?还是我在讨好灾难?
发布于 2014-01-06 23:12:58
Control.Invoke,.In,WPF,您有dispatcher来执行它:Dispatcher.Invoke。WinForms:
form1.Invoke(/* a delegate for your operation */)WPF:
window1.Dispatcher.Invoke(/* a delegate for your operation */)您所做的不是在“单一单元”中更改对象,而是要求(调用)控制它的STA线程为您做它(您调用的委托)。您还拥有用于异步执行此操作的BeginInvoke。
https://stackoverflow.com/questions/20960916
复制相似问题