• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
只是向上走
采菊东篱下,悠然见南山。
博客园    首页    新随笔    联系   管理    订阅  订阅
2013年3月12日
C#异步编程的实现方式(6)——层次任务
摘要: 任务也可以构成一个层次结构。一个任务启动一个新任务时,就启动了一个层次结构。下面的代码段在父任务内部新建一个任务。创建子任务的代码与创建父任务的代码相同,唯一的区别是这个任务从另一个任务内部创建: 1: static void Main(string[] args) 2: { 3: Task parentTask = new Task(ParentTask); 4: parentTask.Start(); 5: 6: Console.Read(); 7: } 8: 9: static void ParentTask() 10: ... 阅读全文
posted @ 2013-03-12 16:51 jes.shaw 阅读(292) 评论(0) 推荐(0)
C#异步编程的实现方式(5)——连续任务
摘要: 通过任务,可以指定在任务完成后,应开始运行另一个特定任务。任务处理程序或者不带参数或者带一个对象参数,而连续处理程序有一个Task类型的参数。下面先定义两个任务: 1: static void FirstTaskMethod() 2: { 3: Console.WriteLine(String.Format("Task {0} is doing something", Task.CurrentId)); 4: Thread.Sleep(200); 5: } 6: 7: static void SecondTaskMethod(Task task) ... 阅读全文
posted @ 2013-03-12 16:50 jes.shaw 阅读(305) 评论(0) 推荐(0)
C#异步编程的实现方式(4)——Task任务
摘要: .Net Framework 4.0新增了一个System.Threading.Tasks命名空间,它包含的类提供了任务的相关操作。使用任务不仅可以获得一个抽象层,还能对底层线程进行很多统一的控制操作。这里先介绍一下Task的简单使用。最基本的是知道怎么启动一个Task。1、Task类构造函数使用Task类的构造函数。实例化Task对象时,任务不会立即运行,而是指定Created状态。接着调用Task类的Start()方法来启动任务。使用Task类时,除了调用Start()方法,还可以调用RunSynchronously()方法。这样,任务也会启动,但是同时调用。默认情况下,任务是异步运行的。 阅读全文
posted @ 2013-03-12 16:49 jes.shaw 阅读(418) 评论(0) 推荐(0)
C#异步编程的实现方式(3)——ThreadPool线程池
摘要: 在需要创建的线程很多,且都是比较小的线程的情况下,可以使用线程池(ThreadPool类)。ThreadPool是一个静态方法,提供了对一个线程集合的操作,它会在线程数不足时增加线程,空闲线程数过多时释放资源。1、ThreadPool简单应用调用ThreadPool.QueueUserWorkItem()方法,传递一个WaitCallBack委托类型的方法,并把这个方分配给线程池中的线程。线程池是自动运行的,如果线程池还没有运行,就会创建一个线程池,并启动第一个线程。如果线程池己经在运行,且有一个空闲线程来完成该任务,就把该作业传递给这个线程。下面这个方法是一个符合WaitCallBack委托 阅读全文
posted @ 2013-03-12 16:48 jes.shaw 阅读(411) 评论(0) 推荐(0)
C#异步编程的实现方式(2)——Thread类
摘要: .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 running"); 6: Thread.Sleep(500)... 阅读全文
posted @ 2013-03-12 16:47 jes.shaw 阅读(310) 评论(0) 推荐(0)
C#异步编程的实现方式(1)——异步委托
摘要: 异步的实现即多线程,一种简单的方式就是创建一个委托,然后异步调用它。 .Net Framework已经为我们提供了委托的异步调用方法。下面介绍三种使用委托实现异步的方法。1、投票(IsCompleted属性)首先定义一个委托: 1: public delegate string MyDelegate(int ms);Delegate类提供了BeginInvoke()方法,这个方法返回一个IAsyncResult接口,这个接口包含了该委托的相关信息,并且可以通过它的IsCompleted属性来判断该委托是否执行完成。下面是将要异步调用的方法: 1: static string Deleg... 阅读全文
posted @ 2013-03-12 16:45 jes.shaw 阅读(324) 评论(0) 推荐(0)
C# 委托的同步调用和异步调用
摘要: 委托的Invoke方法用来进行同步调用。同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行。 同步调用的例子:namespace ConsoleApplication1{ public class MyClass { public static void Main(string[] args) { Invoke.SyncInvoke(); } } public delegate int AddHandler(int a, int b); public class I... 阅读全文
posted @ 2013-03-12 15:12 jes.shaw 阅读(293) 评论(0) 推荐(0)
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3