您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        需要在.Net 4.0才会有Task
当然,既然接触到了Task,或许以后就不再用线程了,具体看情况了,之前几个线程之间就发生了阻塞问题,这次就是要解决这个问题才下这个功夫的,否则宁可被差遣抱儿子尿尿去。
- using System;
 - using System.Collections.Generic;
 - using System.Linq;
 - using System.Text;
 - using System.Threading.Tasks;
 - using System.Threading;
 - namespace TaskDemo
 - {
 - class Program
 - {
 - static void Main(string[] args)
 - {
 - Thread mTH = new Thread(RunTask);
 - mTH.Start();
 - //Thread mTH1 = new Thread(RunThread);
 - //mTH1.Start();
 - }
 - private static void RunThread()
 - {
 - for (int i = 0; i < 20; i++)
 - {
 - Thread.Sleep(2);
 - Console.WriteLine("RunThread{0}", i);
 - }
 - }
 - private static void RunTask()
 - {
 - try
 - {
 - int mCount = 0;
 - CancellationTokenSource tokenSource = new CancellationTokenSource();
 - CancellationToken token = tokenSource.Token;
 - Task t = new Task(() =>
 - {
 - Console.WriteLine("进入任务……");
 - Thread.Sleep(10);
 - Console.WriteLine("任务开始工作……");
 - //模拟工作过程
 - for (int i = 0; i < 20; i++)
 - {
 - if (token.IsCancellationRequested == true)
 - {
 - break; //这里别人是用一个throw new OperationCanceledException(token); 但是我用就会报错
 - }
 - mCount++;
 - Console.WriteLine("RunTask{0}", i);
 - Thread.Sleep(1);
 - }
 - }, token);
 - token.Register(() =>
 - {
 - Console.WriteLine("Canceled");
 - });
 - t.Start();
 - Console.WriteLine("这条语句先运行完毕了……");
 - t.ContinueWith((task) =>
 - {
 - Console.WriteLine("任务完成,完成时候的状态为:");
 - Console.WriteLine("IsCanceled={0}\tIsCompleted={1}\tIsFaulted={2}\tmCount={3}", task.IsCanceled, task.IsCompleted, task.IsFaulted, mCount);
 - });
 - Console.WriteLine("现在就按任意键的话,程序就退出了……");
 - RunThread(); //线程内部较耗时的测试
 - Console.ReadKey(); //由于两个sleep都有点时间,如果在这时间之前按下任意键,结果是程序提前终止了
 - tokenSource.Cancel();
 - Console.ReadKey(); //程序退出
 - }
 - catch (Exception Ex)
 - {
 - Console.WriteLine(Ex.Message);
 - }
 - }
 - }
 - }
 
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。