线程
Nicky锋
我心有猛虎在细嗅蔷薇
展开
-
如何在工作线程中更新窗体的UI元素(Dispatcher机制)
这是一个普遍的问题:如果我们再程序中使用了多线程技术,而工作线程(后台线程)如果需要更新界面上的元素(例如进度条等),就会有一个线程安全性问题,因为进度条是由主线程创建出来的。 关于这一点,大致上看,WPF的机制与Windows Forms是没有差别的。我们在Windows Forms中需要按照下面的方式更新窗体元素。 using System; using System.Window转载 2014-02-12 09:49:28 · 702 阅读 · 0 评论 -
Invalid Cross-thread access... bug?
今天为Invalid Cross-thread access这个bug可为折腾了一翻 起初以为是下载字符串的问题,Uri uri=new Uri(downString) ,downString总显示empty,但是实际上是有值的,在Uri上折腾了半天,还是没有修正bug,断点逐步找bug,发现到要NavigateService.Navigate()时,此处出现Invalid Cr转载 2014-02-25 10:44:29 · 639 阅读 · 0 评论 -
Silverlight与WPF中BeginInvoke的差异
Silverlight/WPF中,如果要在多线程中对界面控件值做修改,用Dispatcher对象的BeginInvoke方法无疑是最方便的办法 ,见:温故而知新:WinForm/Silverlight多线程编程中如何更新UI控件的值 但今天发现WPF中的BeginInvoke却无法自动将匿名方法/Lambda表达式转变成Delegate类型(注:对委托,匿名方法,Lambda感到陌生转载 2014-02-12 09:26:09 · 697 阅读 · 0 评论 -
ManualResetEvent和AutoResetEvent的区别
在讨论这个问题之前,我们先了解这样一种观点,线程之间的通信是通过发信号来进行沟通的。(这不是废话) 先来讨论ManualResetEvent,讨论过程中我会穿插一些AutoResetEvent的内容,来做对比: ManualResetEvent都可以阻塞一个或多个线程,直到收到一个信号告诉ManualResetEvent不要再阻塞当前的线程。 可以想象M转载 2014-02-11 16:30:20 · 614 阅读 · 0 评论 -
async & await 的前世今生(Updated)
async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了。但是这也给我们编程埋下了一些隐患,有时候可能会产生一些我们自己都不知道怎么产生的Bug,特别是如果连线程基础没有理解的情况下,更不知道如何去处理了。那今天我们就来好好看看这两兄弟和他们的叔叔(Task)爷爷(Thread)们到底有转载 2014-03-03 17:18:27 · 545 阅读 · 0 评论