【发布时间】:2016-09-19 10:44:51
【问题描述】:
我有一个简单的异步和等待程序:
class Program
{
static void Main()
{
var demo = new AsyncAwaitDemo();
Task.Run(() => {demo.DoStuff()};
while (true)
{
Console.WriteLine("Doing Stuff on the Main Thread...................");
}
}
}
public class AsyncAwaitDemo
{
public async Task DoStuff()
{
await LongRunningOperation();
}
private static async Task<string> LongRunningOperation()
{
int counter;
for (counter = 0; counter < 50000; counter++)
{
Console.WriteLine(counter);
}
return "Counter = " + counter;
}
}
我的第一个问题是:
- 是否必须在任何 async 和 await 方法中使用
Task.Run,因为我刚刚删除并且程序变得同步。我知道 await 是用于创建暂停点,并且在该线程的等待函数完成之前不会进一步执行。
其次,
-
以下代码创建时有多少线程?
Task.Run(() => {demo.DoStuff()};
如果大于1,则线程数取决于内部操作,在本例中为带计数器的for循环。
我开始了解 C# 中的异步编程,阅读并练习了一些示例。除了我上面要求的说明之外,我几乎可以了解上下文。
【问题讨论】:
标签: c# .net multithreading asynchronous