任务
1.启动任务
“专业、务实、高效、创新、把客户的事当成自己的事”是我们每一个人一直以来坚持追求的企业文化。 成都创新互联是您可以信赖的网站建设服务商、专业的互联网服务提供商! 专注于成都网站建设、成都网站设计、软件开发、设计服务业务。我们始终坚持以客户需求为导向,结合用户体验与视觉传达,提供有针对性的项目解决方案,提供专业性的建议,创新互联建站将不断地超越自我,追逐市场,引领市场!
class Program { static void Main(string[] args) { //三种启动任务方式 //第一种 TaskFactory tf1 = new TaskFactory(); Task t1 = tf1.StartNew(TaskMethod); //第二种 Task t2 = Task.Factory.StartNew(TaskMethod); //第三种 Task t3 = new Task(TaskMethod); t3.Start(); Console.ReadKey(); } private static void TaskMethod() { Console.WriteLine("Task ID:{0}", Task.CurrentId); } }
2,连续任务
class Program { static void Main(string[] args) { Task t1 = new Task(GetTask); Task t2 = t1.ContinueWith(NewTask); Task t3 = t2.ContinueWith(NewTask2); t1.Start(); Console.ReadKey(); } private static void GetTask() { Console.WriteLine("GetTask:{0}", Task.CurrentId); Thread.Sleep(1000); } private static void NewTask(Task t) { Console.WriteLine("NewTask:{0},pTask:{1}", Task.CurrentId, t.Id); } private static void NewTask2(Task t) { Console.WriteLine("NewTask2:{0},pTask:{1}", Task.CurrentId, t.Id); } }
3,任务的层次结构
class Program { static void Main(string[] args) { a1(); Console.ReadKey(); } private static void a1() { Task t = new Task(a2); Console.WriteLine("a1开始:{0}", t.Status);//a2任务状态:Created(该任务已初始化,但尚未被计划) t.Start(); Console.WriteLine("a1过程:{0}", t.Status);//a2任务状态:WaitingToRun(该任务已被计划执行,但尚未开始执行) Thread.Sleep(3000); Console.WriteLine("a1结束:{0}", t.Status);//a2任务状态:RanToCompletion(成功执行了任务) } private static void a2() { Console.WriteLine("a2:{0}", Task.CurrentId); Task t = new Task(a3); t.Start(); } private static void a3() { Console.WriteLine("a3:{0}", Task.CurrentId); } }
4,任务的结束
class Program { static void Main(string[] args) { Taskt = new Task (GetString, "你好"); t.Start(); Console.WriteLine(t.Result); Console.ReadKey(); } private static string GetString(object s) { return s.ToString(); } }
============================续.......................
任务类似于线程
成员名称 | 说明 |
---|---|
Canceled | 该任务已通过对其自身的 CancellationToken 引发 OperationCanceledException 对取消进行了确认,此时该标记处于已发送信号状态;或者在该任务开始执行之前,已向该任务的 CancellationToken 发出了信号。有关详细信息,请参阅任务取消。 |
Created | 该任务已初始化,但尚未被计划。?xml:namespace> |
Faulted | 由于未处理异常的原因而完成的任务。 |
RanToCompletion | 已成功完成执行的任务。 |
Running | 该任务正在运行,但尚未完成。 |
WaitingForActivation | 该任务正在等待 .NET Framework 基础结构在内部将其激活并进行计划。 |
WaitingForChildrenToComplete | 该任务已完成执行,正在隐式等待附加的子任务完成。 |
WaitingToRun | 该任务已被计划执行,但尚未开始执行。 |
Task t = new Task(() => { Thread.Sleep(10000); Console.WriteLine("Task:{0}", Task.CurrentId); Console.WriteLine("thread:{0}", Thread.CurrentThread.ManagedThreadId); }); //开始执行任务 t.Start(); //等待任务完成(线程阻塞) t.Wait(); //当处理完成任务之后输出 if (t.Status == TaskStatus.RanToCompletion) Console.WriteLine("Main:{0}", Thread.CurrentThread.ManagedThreadId); Console.ReadKey();
分享标题:任务
网站URL:http://scyanting.com/article/pgcpgo.html