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)
{
Task t = 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();