c#
文章平均质量分 61
liujiejieliu1234
这个作者很懒,什么都没留下…
展开
-
c#线程同步(2)----lock
lock语句根本使用的就是Monitor.Enter和Monitor.Exit,也就是说lock(this)时执行Monitor.Enter(this),大括号结束时执行Monitor.Exit(this).他的意义在于什么呢,对于任何一个对象来说,他在内存中的第一部分放置的是所有方法的地址,第二部分放着一个索引,他指向CLR中的SyncBlock Cache区域中的一个SyncBlock.什原创 2015-04-27 18:35:45 · 479 阅读 · 0 评论 -
c#线程同步(3)----monitor
首先lock和Minitor有什么区别呢? 其实lock在IL代码中会被翻译成Monitor。也就是Monitor.Enter(obj)和Monitor.Exit(obj). lock(obj) { } 等价为: try { Monitor.Enter(obj) } catch() {} finally { Monitor.Exit(obj) } 所以lock能原创 2015-04-27 18:41:48 · 486 阅读 · 0 评论 -
C#线程同步(1)-------轻量级同步Interlock
在c#里面,实现线程同步方法有很多种。我了解到的至少有8种。这里先讲下,一种比较简单的同步方法-------轻量级同步Interlock。 为什么说它是轻量级呢?因为它仅对整形数据(即int类型,long也行)进行同步。如果你学过操作系统里面的PV操作(即信号量),那么你对它已经了解了一般。它实现的正是如同信号量的功能。下面是它提供的方法: 例程:原创 2015-04-27 18:22:54 · 1563 阅读 · 0 评论 -
C#中ParameterizedThreadStart和ThreadStart区别
函数不需要传递参数,也不需要返回参数 我们知道启动一个线程最直观的办法是使用Thread类,具体步骤如下: ThreadStart threadStart=new ThreadStart(Calculate); Thread thread=new Thread(threadStart); thread.Start(); public void Calcul原创 2015-04-27 17:10:57 · 2187 阅读 · 0 评论 -
C#中Invoke的用法
在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态,例如:某个按钮上的文本原先叫“打开”,单击之后按钮上的文本显示“关闭”,初学者往往会想当然地这么写: void ButtonOnClick(object sender,EventArgs e) { button.Text="关闭"; } 这样的转载 2015-04-27 16:20:42 · 24770 阅读 · 2 评论 -
Application.DoEvents()的作用
记得第一次使用Application.DoEvents()是为了在加载大量数据时能够有一个数据加载的提示,不至于系统出现假死的现象,当时也没有深入的去研究他的原理是怎样的,结果在很多地方都用上了Application.DoEvents(),今天看到了关于这方面的一些文章,知道我以前有些用法是不当的,有些地方需要慎用Application.DoEvents()。 首先我们先看看在循环比较大的程序中原创 2015-04-27 14:16:56 · 2476 阅读 · 0 评论