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