随笔分类 - 多线程
关于多线程技术
摘要:方法A:Action f = () => { txtProcess.Text = "开始更新程序..."; };方法B: this.Dispatcher.Invoke((Action)delegate { this.loginBusyIndicator.IsBusy = false; loginIm...
阅读全文
摘要:http://blog.csdn.net/sq_zhuyi/article/details/6869661
阅读全文
摘要:锁定的目的:由于多个线程 并行/并发 处理同一个“数据对象”(比如:在其它线程的某个地方发生了Clear、Add、Remove、Change等操作),导致“数据对象”不断变化,没法用了,所以,为了保证数据在某个计算时刻的“恒定”,使用排它锁将“数据对象”锁定,然后就视该“数据对象”为“一个恒定量”进行逻辑处理。
阅读全文
摘要:关于事件的“激发”,可以进行以下两种描述,便于从多个角度进行理解,也便于在实际开发中灵活应用。1:在某种情况下,会引发“某个事件” 或 根据“某种需要”,在代码的“适当位置”“主动” 引发一个事件。 2:在某种动作 或 时机下,会触发“某个事件”。 如下面的例子:调用RaiseRemovingEvent方法,将“主动”引发“BatchAlarmDataRemovedEvent”事件 public event Action> BatchAlarmDataRemovedEvent; private void RaiseRemovingEvent(IList abandonedAlarms..
阅读全文
摘要:在编写客户端类的程序时,经常优化代码和使用异步委托(或开辟子线程),这二者要区分对待,主线程中的代码需要优化,子线程中的代码同样需要优化,异步委托的主要贡献是,使某些操作或运算不致于紧紧抓住主线程不放,这样主线程不致于出现“假死状态”,所以二者要区分对待
阅读全文
摘要:默认情况下,C#不允许在一个线程中直接操作另一个线程中的控件,这是因为访问Windows窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的bug,以及不同线程争用控件引起的死锁问题。因此确保以线程安全方式访问控件非常重要。 在调试器中运行应用程序时,如果创建某控件的线程之外的其他线程试图调用该控件,则调试器会引发一个InvalidOperationException异常,并提示消息:“从不是创建控件的线程访问它”。 但是在Windows应用程序中,为了在窗体上显示线程中处理的信息,我们可能需要经常在一个线程.
阅读全文