C# 不用async異步方法

不用async異步方法

C#並不是一定要用async方法才能實現異步。

Thread實現異步

第一種方式,可以用傳統的Thread類實現線程來執行異步任務,舉例:

using System;
using System.Threading;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine($"ThreadID:{Thread.CurrentThread.ManagedThreadId}  Hello, I am Caller!");
            var trd= new Thread(()=>{
                    Thread.Sleep(3000);
                    System.Console.WriteLine($"ThreadID:{Thread.CurrentThread.ManagedThreadId}  Task run.");
                });
            trd.Start();
            Console.WriteLine($"ThreadID:{Thread.CurrentThread.ManagedThreadId}  Hello, I am Caller too!");
            Console.Read();
        }
    }
}

輸出結果:

ThreadID:1  Hello, I am Caller!
ThreadID:1  Hello, I am Caller too!
ThreadID:5  Task run.

Task直接實現異步

第二種方法是,假如不需要知道異步結果,那麼可以使用Task.Run()。

using System;
using System.Threading.Tasks;
using System.Threading;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine($"ThreadID:{Thread.CurrentThread.ManagedThreadId}  Hello, I am Caller!");
            var t = Task.Run(()=>{
                Thread.Sleep(3000);
                System.Console.WriteLine($"ThreadID:{Thread.CurrentThread.ManagedThreadId}  Task run.");
            });
            Console.WriteLine($"ThreadID:{Thread.CurrentThread.ManagedThreadId}  Hello, I am Caller too!");
            Console.Read();
        }
    }
}

輸出結果(和Thread例子輸出結果一樣):

輸出結果:

ThreadID:1  Hello, I am Caller!
ThreadID:1  Hello, I am Caller too!
ThreadID:5  Task run.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章