【发布时间】:2016-07-24 20:34:35
【问题描述】:
我是 C# 新手,想知道在哪些情况下使用 Async/Await 以及何时使用线程,因为我知道 Async/Await 不会创建新线程。
例如,如果我想在接下来的 10 小时内安排每小时打印 hello,应该使用以下两种打印方法中的哪一种?
private async void PrintHelloAsync(int delay)
{
await Task.Delay(delay);
Console.WriteLine("Hello");
}
private void PrintHelloThread(int delay)
{
Task.Run(async () =>
{
await Task.Delay(delay);
Console.WriteLine("Hello");
});
}
我应该调用 PrintHelloAsync 10 次并增加延迟,还是调用 PrintHelloThread?
我是否正确使用了这些并发概念?
现在我正在做一个项目,我需要在下午 6 点、晚上 9 点和午夜安排任务,并试图找出最好的方法。
【问题讨论】:
-
这两个函数基本上是一回事,只是不能等待第二个。
PrintHelloThread只会打印一次“Hello”。 -
谁说异步等待不创建新线程?异步方法应该做一些异步工作。只要遇到 await 语句,调用线程就会继续执行。可能会创建一个新线程(取决于线程池)来执行异步方法的其余过程。
标签: c# multithreading asynchronous concurrency async-await