上一页 1 ··· 10 11 12 13 14
  2011年3月25日
摘要: 当CLR要定位一个程序集时,它将扫描应用程序的几个子目录,下面是CLR扫描一个语言文化中性的程序集时的顺序: AppBase\AsmName.dll AppBase\AsmName\AsmName.dll 如果在上面的目录下没有找到该程序集,CLR将以.exe代替.dll扩展名来搜索。如果仍找不到,将抛出FileNotFoundException异常。 对于其他语言文化程序集(即卫星程序集)来说,除了期望被放在应用程序集目录下,且名字和语言文化相匹配的子目录外,其他规则仍适用。 以"en-US"为例,CLR将扫描以下目录: AppBase\en-US\AsmName.dll 阅读全文
posted @ 2011-03-25 10:44 辛勤的代码工 阅读(407) 评论(0) 推荐(0) 编辑
摘要: Timer类:设置一个定时器,定时执行用户指定的函数。定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数。构造函数:Timer(TimerCallback callback, object state, int dueTime, int period)参数说明 callback:一个 System.Threading.TimerCallback 委托,表示要执行的方法。 state:一个包含回调方法要使用的信息的对象,或者为 null。 dueTime:调用 callback 之前延迟的时间量(以毫秒为单位)。指定 System.Threading.Timeout.Infinite 阅读全文
posted @ 2011-03-25 10:43 辛勤的代码工 阅读(7300) 评论(0) 推荐(0) 编辑
摘要: 同步事件和等待句柄用于解决复杂的同步情况。比如一个大的计算步骤包含3个步骤result = first term + second term + third term,如果现在想写个多线程程序,同时计算first term,second term 和third term,等所有3个步骤计算好后再把它们汇总起来,我们就需要使用到同步事件和等待句柄。 同步事件分有两个,分别为AutoResetEvent和ManualResetEvent,这两个类可以用来代表某个线程的运行状态:终止和非终止。 等待句柄用来判断ResetEvent的状态,如果是非终止状态就一直等待,否则放行,让等待句柄下面的代码继. 阅读全文
posted @ 2011-03-25 10:41 辛勤的代码工 阅读(1504) 评论(1) 推荐(0) 编辑
摘要: Monitor类功效和lock类似: 1 System.Object obj = (System.Object)x; 2 System.Threading.Monitor.Enter(obj); 3 try 4 { 5 DoSomething(); 6 } 7 finally 8 { 9 System.Threading.Monitor.Exit(obj);10 } lock关键字比Monitor简洁,其实lock就是对Monitor的Enter和Exit的一个封装。 另外,Monitor还有几个常用的方法: (1) TryEnter TryEnter能够有效的决绝长期死等的问题,如果在一个并 阅读全文
posted @ 2011-03-25 10:39 辛勤的代码工 阅读(1503) 评论(0) 推荐(0) 编辑
摘要: 我们知道,在.net的一些集合类型中,譬如Hashtable和ArrayList,都有Synchronized静态方法和SyncRoot属性,他们之间有联系吗?我怎么才能用好他们呢? 以Hashtable为例,看看他们的基本用法:1 Hashtable ht = Hashtable.Synchronized(new Hashtable());2 lock (ht.SyncRoot)3 {4 ......5 } Synchronized表示返回一个线程安全的Hashtable,什么样的 hashtable才是一个线程安全的呢?下边我们就从.NET的源码开始理解。1 public static . 阅读全文
posted @ 2011-03-25 10:27 辛勤的代码工 阅读(9333) 评论(2) 推荐(0) 编辑
摘要: 1.避免锁定public类型对象。 如果实例可以被公共访问,将出现lock(this)问题。 如有一个类MyClass,该类有一个Method方法通过lock(this)来实现互斥: 1 public class MyClass 2 { 3 public void Method() 4 { 5 lock(this) 6 { 7 ...... 8 } 9 }10 } 如果一个MyClass的实例在不同线程中执行Method方法,可以实现互斥。但如果多个MyClass的实例分别在不同的线程中执行Method方法,互斥将失效,因为此处的lock(this)仅对当前的实例对象进行了加锁。2.禁止锁定类 阅读全文
posted @ 2011-03-25 10:25 辛勤的代码工 阅读(2472) 评论(5) 推荐(4) 编辑
上一页 1 ··· 10 11 12 13 14