警告试着告诉我什么?我该怎么办?
这是我的代码:它是否使用多线程运行?
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
关键字本身并没有什么作用。将其从代码中移除,代码的行为将完全相同。
异步
做什么?
await
关键字await
转换方法主体。任务
中。在ViewComponent中,我得到了以下警告:(我使用了) 更新: 在视图中,我有:
我猜我的代码有很多薄弱点,所以请随时分享任何想法。顺便问一下,我的主要问题是,当我尝试执行以下操作时,以及在最后,当我希望等待所有任务(通过使用task.waitall)完成以检查是否存在任何异常时,是否真的会因为缺少'await'操作符而使代码的任何部分同步运行? 完整的来源,如果需要进一步的信息。也许还值得一提的是,我使用的是.NET5.0。
我知道我可以通过等待来修复它,但对于只执行一些廉价操作的方法来说,这感觉不对。这听起来也会给执行增加不必要的开销,但我也不确定这是否已经存在,因为存在关键字。 我应该忽略这些警告,还是有一种我看不到的方法来解决这个问题?
我有一个接口,其中包含一些返回的函数。实现接口的一些类不需要等待任何东西,而其他类可能只是抛出--因此警告是虚假的和令人讨厌的。
是否可以调用一个异步方法,以便它从一个同步的方法异步运行?我不关心它挂起同步调用程序直到它返回,而是希望该方法被异步调用。