02 2015 档案
摘要:在上一讲介绍了使用lock来实现线程之间的同步。实际上,这个lock是C#的一个障眼法,在C#编译器编译lock语句时,将其编译成了调用Monitor类。先看看下面的C#源代码: Code highlighting produced by Actipro CodeHighlighter (freew...
阅读全文
摘要:虽然线程可以在一定程度上提高程序运行的效率,但也会产生一些副作用。让我们先看看如下的代码:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->classIn...
阅读全文
摘要:如果设计一个服务器程序,每当处理用户请求时,都开始一个线程,将会在一定程序上消耗服务器的资源。为此,一个最好的解决方法就是在服务器启动之前,事先创建一些线程对象,然后,当处理客户端请求时,就从这些建好的线程中获得线程对象,并处理请求。保存这些线程对象的结构就叫做线程池。 在C#中可以通过Syste...
阅读全文
摘要:Monitor对象 1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中为了避免获取锁之后因为异常,致锁无法释放,所以需要在try{} catch(){}之后的finally{}...
阅读全文
摘要:在前文中,介绍了.NET下的多种异步的形式,在WEB程序中,天生就是多线程的,因此使用异步应该更为谨慎。本文将着重展开ASP.NET中的异步。 【注意】本文中提到的异步指的是服务器端异步,而非客户端异步(Ajax)。 对于HTTP的请求响应模型,服务器无法主动通知或回调客户端,当客户端发起一个请求...
阅读全文
摘要:在说到异步前,先来理一下几个容易混淆的概念,并行、多线程、异步。 并行,一般指并行计算,是说同一时刻有多条指令同时被执行,这些指令可能执行于同一CPU的多核上,或者多个CPU上,或者多个物理主机甚至多个网络中。 多线程,一般指同一进程中多个线程(包含其数据结构、上下文与代码片段)协作运行。在多核计...
阅读全文
摘要:ThreadStart:ThreadStart这个委托定义为void ThreadStart(),也就是说,所执行的方法不能有参数。ThreadStart threadStart=new ThreadStart(Calculate);Thread thread=new Thread(threadSt...
阅读全文
摘要:1.WCF编程http://www.cnblogs.com/wengyuli/category/217446.html2.wcf热门问题编程示例http://blog.csdn.net/book_frank_xl/article/category/610975/43.我的WCF之旅http://ww...
阅读全文
摘要:Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件...
阅读全文
摘要:在平时的工作中,估计大多数都做过轮询调度的任务,比如定时轮询数据库同步,定时邮件通知等等。大家通过windows计划任务,windows服务等都实现过此类任务,甚至实现过自己的配置定制化的框架。那今天就来介绍个开源的调度框架Quartz.Net(主要介绍配置的实现,因为有朋友问过此类问题)。调度的...
阅读全文