zoukankan      html  css  js  c++  java
  • C# 实践 3 task 关键字

    参考:

    https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.tasks.task?view=netframework-4.8#definition

    Task 类表示不返回值并且通常以异步方式执行的单个操作

    来自参考的示例代码:

    using System;
    using System.Threading;
    using System.Threading.Tasks;
    
    class Example
    {
        static void Main()
        {
            Action<object> action = (object obj) =>
                                    {
                                       Console.WriteLine("Task={0}, obj={1}, Thread={2}",
                                       Task.CurrentId, obj,
                                       Thread.CurrentThread.ManagedThreadId);
                                    };
    
            // Create a task but do not start it.
            Task t1 = new Task(action, "alpha");
    
            // Construct a started task
            Task t2 = Task.Factory.StartNew(action, "beta");
            // Block the main thread to demonstrate that t2 is executing
            t2.Wait();
    
            // Launch t1 
            t1.Start();
            Console.WriteLine("t1 has been launched. (Main Thread={0})",
                              Thread.CurrentThread.ManagedThreadId);
            // Wait for the task to finish.
            t1.Wait();
    
            // Construct a started task using Task.Run.
            String taskData = "delta";
            Task t3 = Task.Run( () => {Console.WriteLine("Task={0}, obj={1}, Thread={2}",
                                                         Task.CurrentId, taskData,
                                                          Thread.CurrentThread.ManagedThreadId);
                                       });
            // Wait for the task to finish.
            t3.Wait();
    
            // Construct an unstarted task
            Task t4 = new Task(action, "gamma");
            // Run it synchronously
            t4.RunSynchronously();
            // Although the task was run synchronously, it is a good practice
            // to wait for it in the event exceptions were thrown by the task.
            t4.Wait();
        }
    }
    // The example displays output like the following:
    //       Task=1, obj=beta, Thread=3
    //       t1 has been launched. (Main Thread=1)
    //       Task=2, obj=alpha, Thread=4
    //       Task=3, obj=delta, Thread=3
    //       Task=4, obj=gamma, Thread=1
    

      

  • 相关阅读:
    pat03-树1. 二分法求多项式单根(20)
    pat05-图1. List Components (25)
    pat06-图4. Saving James Bond
    pat05-图3. 六度空间 (30)
    pat05-图2. Saving James Bond
    pat04-树9. Path in a Heap (25)
    pat04-树8. Complete Binary Search Tree (30)
    pat04-树7. Search in a Binary Search Tree (25)
    pat04-树5. File Transfer (25)
    Two Sum
  • 原文地址:https://www.cnblogs.com/alexYuin/p/12397678.html
Copyright © 2011-2022 走看看