mjb*_*mjb 8 c# asynchronous async-await
我的程序有以下声明的3个警告:
这种异步方法缺少"等待"运算符并将同步运行.考虑使用'await'运算符等待非阻塞API调用,或'await Task.Run(...)'在后台线程上执行CPU绑定工作.
试着告诉我什么警告?我该怎么办?
这是我的代码:它是否使用多线程运行?
static void Main(string[] args)
{
Task task1 = new Task(Work1);
Task task2 = new Task(Work2);
Task task3 = new Task(Work3);
task1.Start();
task2.Start();
task3.Start();
Console.ReadKey();
}
static async void Work1()
{
Console.WriteLine("10 started");
Thread.Sleep(10000);
Console.WriteLine("10 completed");
}
static async void Work2()
{
Console.WriteLine("3 started");
Thread.Sleep(3000);
Console.WriteLine("3 completed");
}
static async void Work3()
{
Console.WriteLine("5 started");
Thread.Sleep(5000);
Console.WriteLine("5 completed");
}
Run Code Online (Sandbox Code Playgroud)
该async关键字,其本身并没有真正做多。从您的代码中删除它,您的代码将完全相同。
怎么async办?
await关键字await方法主体。Task。但是,如果您a)await方法体中没有任何s并且b)void返回,那么将不会实现任何特殊操作。编译器警告确实试图澄清这一点-一种async没有任何await意义的方法毫无意义。await是此功能的更重要部分。
您在方法中使用了 ' async' 关键字,这表明 Work1()、Work2() 和 Work3() 方法是异步执行的,但您没有使用 'await' 关键字。因此它是同步执行的。await如果需要,请使用 ' ' 关键字异步执行它。
static async void Work1()
{
Console.WriteLine("10 started");
await Task.Delay(10000);
Console.WriteLine("10 completed");
}
static async void Work2()
{
Console.WriteLine("3 started");
await Task.Delay(3000);
Console.WriteLine("3 completed");
}
static async void Work3()
{
Console.WriteLine("5 started");
await Task.Delay(5000);
Console.WriteLine("5 completed");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17846 次 |
| 最近记录: |