08 2012 档案
摘要:任务也可以构成一个层次结构。一个任务启动一个新任务时,就启动了一个层次结构。下面的代码段在父任务内部新建一个任务。创建子任务的代码与创建父任务的代码相同,唯一的区别是这个任务从另一个任务内部创建: 1: static void Main(string[] args) 2: { 3: Task parentTask = new Task(Par...
阅读全文
摘要:通过任务,可以指定在任务完成后,应开始运行另一个特定任务。任务处理程序或者不带参数或者带一个对象参数,而连续处理程序有一个Task类型的参数。下面先定义两个任务: 1: static void FirstTaskMethod() 2: { 3: Console.WriteLine(String.Format("Task {0} is doin...
阅读全文
摘要:.Net Framework 4.0新增了一个System.Threading.Tasks命名空间,它包含的类提供了任务的相关操作。使用任务不仅可以获得一个抽象层,还能对底层线程进行很多统一的控制操作。这里先介绍一下Task的简单使用。 最基本的是知道怎么启动一个Task。 1、Task类构造函数 使用Task类的构造函数。实例化Task对象时,任务不会立即运行,而是指定Created状...
阅读全文
摘要:在需要创建的线程很多,且都是比较小的线程的情况下,可以使用线程池(ThreadPool类)。ThreadPool是一个静态方法,提供了对一个线程集合的操作,它会在线程数不足时增加线程,空闲线程数过多时释放资源。1、ThreadPool简单应用调用ThreadPool.QueueUserWorkItem()方法,传递一个WaitCallBack委托类型的方法,并把这个方分配给线程池中的线程。线程池是自动运行的,如果线程池还没有运行,就会创建一个线程池,并启动第一个线程。如果线程池己经在运行,且有一个空闲线程来完成该任务,就把该作业传递给这个线程。下面这个方法是一个符合WaitCallBack委托
阅读全文
摘要:.Net Framework提供了Thread类,它可以创建和控制线程。Thread的构造方法可接受一个无参无返回值的委托类型参数,或一个有object类型参数无返回值的委托类型参数。 1、简单的Thread类实例 先创建两个方法,分别用于两个线程处理: 1: static void ThreadMethod1() 2: { 3: for (int j = 0; j < 20; j++) 4: { 5: Console.WriteLine("Thread 1 is run...
阅读全文
摘要:异步的实现即多线程,一种简单的方式就是创建一个委托,然后异步调用它。 .Net Framework已经为我们提供了委托的异步调用方法。下面介绍三种使用委托实现异步的方法。1、投票(IsCompleted属性)首先定义一个委托: 1: public delegate string MyDelegate(int ms);Delegate类提供了BeginInvoke()方法,这个方法返回一个IAsyncResult接口,这个接口包含了该委托的相关信息,并且可以通过它的IsCompleted属性来判断该委托是否执行完成。下面是将要异步调用的方法: 1: static string Deleg...
阅读全文