本文共 1724 字,大约阅读时间需要 5 分钟。
使用 async
修饰符可将方法、或指定为异步。 如果对方法或表达式使用此修饰符,则其称为异步方法 。
class Program { static void Main(string[] args) { Console.WriteLine("1.同步ThreaID:" + Thread.CurrentThread.ManagedThreadId); RunTimeAsync(); Console.WriteLine("4.异步执行完毕ThreaID:" + Thread.CurrentThread.ManagedThreadId); Thread.Sleep(5000); Console.WriteLine("5.同步延迟完毕ThreaID:" + Thread.CurrentThread.ManagedThreadId); Console.ReadKey(); } public async static Task RunTimeAsync() { Console.WriteLine("2.进入异步ThreaID:" + Thread.CurrentThread.ManagedThreadId); await Task.Delay(1000); Console.WriteLine("3.异步执行后ThreaID:" + Thread.CurrentThread.ManagedThreadId); } }
在异步函数中,Await之后会自动创建出一个线程。执行结果就可以看出
public partial class Form1 : Form{ public Form1() { InitializeComponent(); button1.Click += button1_Click; } private async void button1_Click(object sender, EventArgs e) { await ExampleMethodAsync(); textBox1.Text += "\r\nControl returned to Click event handler.\n"; } private async Task ExampleMethodAsync() { // The following line simulates a task-returning asynchronous process. await Task.Delay(1000); }}
public partial class Form1 : Form{ public Form1() { InitializeComponent(); button1.Click += async (sender, e) => { await ExampleMethodAsync(); textBox1.Text += "\r\nControl returned to Click event handler.\n"; }; } private async Task ExampleMethodAsync() { // The following line simulates a task-returning asynchronous process. await Task.Delay(1000); }}
参考:
转载地址:http://mkiii.baihongyu.com/