不用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.