C# async await 异步例子
public const string Linefeed= "\r\n";
private void BtnasyncAwait_Click(object sender, RoutedEventArgs e)
{
SetTextShow("111 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId);
AsyncMethod();
SetTextShow("222 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId);
private void BtnasyncAwait_Click(object sender, RoutedEventArgs e)
{
SetTextShow("111 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId);
AsyncMethod();
SetTextShow("222 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId);
}
private void SetTextShow(string textContent)
{
txtInfo.Dispatcher.Invoke(new Action(()=> { txtInfo.Text += DateTime.Now.ToString() + " " + textContent + Linefeed; }));
}
{
txtInfo.Dispatcher.Invoke(new Action(()=> { txtInfo.Text += DateTime.Now.ToString() + " " + textContent + Linefeed; }));
}
private void ClearTextShow()
{
txtInfo.Dispatcher.Invoke(new Action(() => { txtInfo.Text = string.Empty; }));
{
txtInfo.Dispatcher.Invoke(new Action(() => { txtInfo.Text = string.Empty; }));
}
private async Task AsyncMethod()
{
var ResultFromTimeConsumingMethod = TimeConsumingMethod();
string Result = await ResultFromTimeConsumingMethod + " + AsyncMethod. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId;
SetTextShow(Result);
//返回值是Task的函数可以不用return
}
{
var ResultFromTimeConsumingMethod = TimeConsumingMethod();
string Result = await ResultFromTimeConsumingMethod + " + AsyncMethod. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId;
SetTextShow(Result);
//返回值是Task的函数可以不用return
}
//这个函数就是一个耗时函数,可能是IO操作,也可能是cpu密集型工作。
private Task<string> TimeConsumingMethod()
{
var task = Task.Run(() => {
SetTextShow("Helo I am TimeConsumingMethod. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(5000);
SetTextShow("Helo I am TimeConsumingMethod after Sleep(5000). My Thread ID is :" + Thread.CurrentThread.ManagedThreadId);
return "Hello I am TimeConsumingMethod";
});
private Task<string> TimeConsumingMethod()
{
var task = Task.Run(() => {
SetTextShow("Helo I am TimeConsumingMethod. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(5000);
SetTextShow("Helo I am TimeConsumingMethod after Sleep(5000). My Thread ID is :" + Thread.CurrentThread.ManagedThreadId);
return "Hello I am TimeConsumingMethod";
});
return task;
}
}