赞
踩
private static string TestString="123"; private async void button7_Click(object sender, EventArgs e) { //async await例子在这里 richTextBox1.Text=await Test4(); //Thread.Sleep(3000); richTextBox1.Text = richTextBox1.Text + "\n 4444 Hi I am Test. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId; } private async Task<string> Test4() { Task<string> t = Task.Run(() => { Thread.Sleep(3000); TestString = "3333 Hi I am Test. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId; return TestString; }); return await t; //Task.WaitAll(t); //richTextBox1.Text = richTextBox1.Text + // "\n 4444 Hi I am Test. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId; //richTextBox1.Text = richTextBox1.Text + "\n " + await t; } private void button8_Click(object sender, EventArgs e) { Task t = Task.Run(()=> TestAsync()); } private void TestAsync() { richTextBox1.BeginInvoke(new Action(() => { Thread.Sleep(3000);//此处是UI线程,会卡画面 richTextBox1.Text = "Hi I am Test. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId; })); } private void button9_Click(object sender, EventArgs e) { //可以实现没有await和async的效果 Task t0 = Task.Run(() => T5()); } private void T5() { Task t1 = Task.Run(() => T6());//另开一个线程不会卡画面 Task.WaitAll(t1); richTextBox1.BeginInvoke(new Action(() => { richTextBox1.Text = TestString;//只更新画面,不要写大量计算 })); } private void T6() { Thread.Sleep(3000); TestString= "6666 Hi I am Test. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId; } private void button3_Click(object sender, EventArgs e) { Task t0 = Task.Run(() => T1() ); Task t1 = Task.Run(() => T2() ); } private void T1() { for (int i = 0; i < 1000; i++) { richTextBox1.Text = richTextBox1.Text + " T1:" + i.ToString(); Thread.Sleep(3000); } } private void T2() { for (int i = 0; i < 1000; i++) { richTextBox1.Text = richTextBox1.Text + " T2:" + i.ToString(); Thread.Sleep(5000); } } private void T3() { int i; for ( i= 0; i < 10; i++) { richTextBox1.BeginInvoke(new Action(() => { richTextBox1.Text = richTextBox1.Text + " T1:" + i.ToString(); })); Thread.Sleep(1000); } } private async void button5_Click(object sender, EventArgs e) { //Console.WriteLine("111 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId); richTextBox1.Text = richTextBox1.Text + " 111 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId; await Test(); //Console.WriteLine("222 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId); richTextBox1.Text = richTextBox1.Text + "\n 222 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId; } private async Task AsyncMethod() { var ResultFromTest = Test(); string Result = await ResultFromTest + " + AsyncMethod. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId; //Console.WriteLine(Result); //返回值是Task的函数可以不用return } //这个函数就是一个耗时函数,可能是IO操作,也可能是cpu密集型工作。 private async Task<string> Test() { var task = Task.Run(() => { //Console.WriteLine("Helo I am Test. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId); richTextBox1.Text = richTextBox1.Text + "\n Helo I am Test. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId; Thread.Sleep(5000); //Console.WriteLine("Helo I am Test after Sleep(5000). My Thread ID is :" + Thread.CurrentThread.ManagedThreadId); richTextBox1.Text = richTextBox1.Text + "\n Helo I am Test after Sleep(5000). My Thread ID is :" + Thread.CurrentThread.ManagedThreadId; return "Hi I am Test"; }); return await task; } private async void button6_Click(object sender, EventArgs e) { richTextBox1.Text = " 111 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId; var t = Task.Run(() => { Thread.Sleep(3000); return "Hi I am Test"; }); richTextBox1.Text = richTextBox1.Text+"\n "+await t; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。