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<string> t = new Task<string>(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 prefix="[default]" xhtml="" ns="http://www.w3.org/1999/xhtml">该任务已初始化,但尚未被计划。?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();
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。