我们有一个使用调度程序的 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
基本上,它相当于 Windows 窗体中的 Control.Invoke - 它只是被分离成自己的对象。
据我了解,Dispatcher.Run
基本上会启动一个事件循环,您可以使用以下命令将调用编组到该事件循环中Dispatcher.Invoke
. Dispatcher.FromThread
找到Dispatcher
负责给定线程的对象 - 因此在这种情况下,它会找到在新线程中运行的事件循环。
因此,在您的代码中,使用 lambda 表达式创建的委托将在新创建的线程中执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)