static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Test1Async();
Console.WriteLine("Call TestAsync1 OK!");
Test2Async();
Console.WriteLine("Call TestAsync2 OK!");
Console.Read();
}
public async static void Test1Async()
{
await Task.Run(() =>
{
System.Threading.Thread.Sleep(5 * 1000);
Console.WriteLine("TestAsync1 OK!");
});
}
public static void Test2Async()
{
Task.Run(() =>
{
System.Threading.Thread.Sleep(5 * 1000);
Console.WriteLine("TestAsync2 OK!");
});
}
===================
直接用task.run 和 用async await怎么感觉没区别啊???
结论:
1.凡是使用await关键字的方法,都必须打上async标记。
2.async表示方法内有异步方法,调用async方法,会立刻另起线程执行。
3.await只是显示等待线程结束。await表示等待异步方法执行完,并取返回值。
参考链接:http://www.cnblogs.com/neverc/p/4653539.html
static void Main(string[] args)
{
Say(); //由于Main不能使用async标记
Console.ReadLine();
}
private async static void Say()
{
var t = Test();
var ta = TestAsync();
Thread.Sleep(1100); //主线程在执行一些任务
Console.WriteLine("主线程"); //主线程完成标记
Console.WriteLine(t); //不等待返回结果 这里会输出 System.Threading.Task.Task`1[System.String]
Console.WriteLine(await ta); //await 主线程等待取异步返回结果 这里会输出:异步执行完成标记
}
static async Task<string> TestAsync()
{
return await Task.Run(() =>
{
Thread.Sleep(5000); //异步执行一些任务
return "异步执行完成标记"; //异步执行完成标记
});
}
static Task<string> Test()
{
return Task.Run(() =>
{
Thread.Sleep(5000); //同步执行一些任务
return "同步执行完成标记"; //同步执行完成标记
});
}