• C# Task任务教程


    Task

    Task的背后的实现也是使用了线程池线程,但它的性能优于ThreadPoll,因为它使用的不是线程池的全局队列,而是使用的本地队列,使线程之间的资源竞争减少。同时Task提供了丰富的API来管理线程、控制。但是相对前面的两种耗内存,Task依赖于CPU对于多核的CPU性能远超前两者,单核的CPU三者的性能没什么差别。

    创建一个task也有3种方式来操作,Task.Factory.StartNew()Task run()new Task(), 前面2种是一样的,不需要用start来开始执行,后面一种需要start来执行的。

     Task t = Task.Run(() =>
     {
      //下面 的代码线性运行
        this.Invoke((EventHandler)(delegate
        {
        }  
    }
    Task t = Task.Factory.StartNew( () => {
                                      // Just loop.
                                      int ctr = 0;
                                      for (ctr = 0; ctr <= 1000000; ctr++)
                                      {}
                                      Console.WriteLine("Finished {0} loop iterations",
                                                        ctr);
                                   } );
    var task1 = new Task(() =>
             {
                Console.WriteLine("Task 1 Begin");
                System.Threading.Thread.Sleep(2000);
                Console.WriteLine("Task 1 Finish");
             });
     task1.Start();

    取消任务的话,需要一个CancellationTokenSourcetoken来取消即可

    var tokenSource = new CancellationTokenSource();
    var token = tokenSource.Token;
    var task = Task.Factory.StartNew(() =>
             {
                for (var i = 0; i < 1000; i++)
                {
                   System.Threading.Thread.Sleep(1000);
                   if (token.IsCancellationRequested)
                   {
                      Console.WriteLine("Abort mission success!");
                      return;
                   }
                }
             }, token);
    tokenSource.Cancel();
  • 相关阅读:
    [转载]PhotoShop性能优化
    SVN常用命令
    [转载]SVN使用教程
    MyEclipse Java Build Path详解
    MyEclipse安装后需要进行的配置
    c#中base64加密解密
    C# MD5 加密
    C# http Post 方法
    EPF与Myeclipse 增强代码自动智能提示
    汉字代码手册
  • 原文地址:https://www.cnblogs.com/bingxing/p/15497006.html
Copyright © 2020-2023  润新知