我的程序有 3 个以下语句的警告:
This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
试图告诉我的警告是什么?我应该怎么办?
这是我的代码:它是否使用多线程运行?
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");
}
最佳答案
async
关键字本身并没有太大作用。从您的代码中删除它,您的代码将执行完全相同的操作。
async
是做什么的?
- 它改变了方法内部的有效内容,特别是它允许您使用
await
关键字 - 反过来,这意味着方法的主体将根据方法主体中存在的
await
进行转换。 - 如果该方法返回一个值,该方法也会转换为将返回值包装在一个
Task
中。
但是,如果您 a) 在您的方法主体中没有任何 await
并且 b) void
返回,则不会实现任何特殊的效果。编译器警告确实试图弄清楚这一点——没有任何 await
的 async
方法只是简单的没有意义。 await
是此功能中更重要的部分。
关于c# - 此异步方法缺少 'await' 运算符,将同步运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41157449/