多线程与应用插件开发全解析
1. 多线程编程基础与问题
在多线程编程中,有一些代码虽然能运行,但可能存在实际应用上的问题。例如下面这段代码:
private void UpdateTextRight()
{
// Get the dispatcher from the current window.
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
(ThreadStart) delegate() {
// Simulate some work taking place.
Thread.Sleep(TimeSpan.FromSeconds(5));
txt.Text = "Here is some new text.";
}
);
}
此代码的问题在于所有工作都在调度线程上进行,这会像单线程应用程序一样占用调度器。另外,调度器还提供了 Invoke() 方法,它和 BeginInvoke() 类似,都是将指定代码编组到调度线程,但 Invoke() 会阻塞当前线程,直到调度器执行完代码。比如在需要暂停异步操作,等待用户反馈时可以使用 Invoke() ,像显示一个“确定/取消”对话框的代码片段就可以用 Invoke() 调用。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



