我们有一个使用调度员的silverlight应用程序,我将不胜感激任何帮助解释以下代码的作用? (不幸的是编写代码的开发人员离开了。)
所以我们拥有以下内容:
public class ABC
{
private Dispatcher dispatcher;
private Thread threadRunner;
public void ABC()
{
threadRunner= new Thread(ThreadRunnerMethod)
{
IsBackground = true,
ApartmentState = ApartmentState.STA
};
threadRunner.Start();
}
private static void ThreadRunnerMethod()
{
Dispatcher.Run();
}
public void MainMethod()
{
dispatcher = Dispatcher.FromThread(threadRunner);
dispatcher.Invoke(new Action(() =>
// "DO SOME WORK WITH A COM OBJECT"
));
}
}
我有一些线程的基本经验,但我不知道这一切是如何工作的?
JD
答案 0 :(得分:3)
它相当于Windows窗体中的Control.Invoke,基本上 - 它只是被分成了自己的对象。
据我了解,Dispatcher.Run
基本上会启动一个事件循环,您可以使用Dispatcher.Invoke
对该事件循环进行调整。 Dispatcher.FromThread
找到负责给定线程的Dispatcher
对象 - 所以在这种情况下,它会找到在新线程中运行的事件循环。
因此,在您的代码中,使用lambda表达式创建的委托将在新创建的线程中执行。