您的位置:首页 > 编程语言 > C#

C# async / await

2014-01-27 13:25 495 查看
1. await只能出现在async修饰的方法中

2.async不能修饰main函数

3.async修饰的方法,用普通方式调用时表现为异步执行,配合await时将变成同步执行

4. The return type of an async method must be void, Task or Task<T>
http://blogs.msdn.com/b/pfxteam/archive/2012/04/12/10293335.aspx http://msdn.microsoft.com/zh-cn/library/hh191443.aspx
[TestMethod]
public void AsyncWait()
{
System.Diagnostics.Debug.WriteLine("main threadid:" + System.Threading.Thread.CurrentThread.ManagedThreadId.ToString());
var t=a();
//t.Wait();
System.Diagnostics.Debug.WriteLine("main after a");
}

//private  int a()
//{
//    //System.Threading.Thread.Sleep(1000 *20 );
//    for(int i=0;i<20;i++)
//        System.Threading.Tasks.Task.Run(
//            ()=>{
//                System.Diagnostics.Debug.WriteLine("i:" + i.ToString() + " a threadid:" + System.Threading.Thread.CurrentThread.ManagedThreadId.ToString());
//            }
//    );
//    return 0;
//}

private async System.Threading.Tasks.Task<int> a()
{
//can't await anonymous function
//await delegate(){
//    return 1;
//};
/*=>{
System.Threading.Thread.Sleep(1000 * 20);
return 0;
};*/

for (int i = 0; i < 20; i++)
{
//await System.Threading.Tasks.Task.Run(
//      () =>
//      {
//          System.Diagnostics.Debug.WriteLine("i:" + i.ToString() + " a threadid:" + System.Threading.Thread.CurrentThread.ManagedThreadId.ToString());
//      }
//);

await System.Threading.Tasks.Task.Factory.StartNew(
() => {
System.Diagnostics.Debug.WriteLine("i:" + i.ToString() + " a threadid:" + System.Threading.Thread.CurrentThread.ManagedThreadId.ToString());
}
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: