ego*_*n12 2 .net c# task-parallel-library async-await
我尝试了async/await的一些东西,但我真的没有得到它.我想要开始的所有内容是同时从两个不同的线程写入控制台.这是代码:
static void Main(string[] args)
{
DoSomethingAsync();
for (int i = 0; i < 1000; i++)
Console.Write(".");
Console.ReadLine();
}
static async void DoSomethingAsync()
{
Console.WriteLine("DoSomethingAsync enter");
//This does not seem good
await Task.Delay(1);
for (int i = 0; i < 1000; i++)
Console.Write("X");
Console.WriteLine("DoSomethingAsync exit");
}
Run Code Online (Sandbox Code Playgroud)
使用Threads很容易但是使用async/await我只能在完成这个奇怪的操作时完成它
await Task.Delay(1);
Run Code Online (Sandbox Code Playgroud)
我看到的大多数基本例子都使用过它 但是,当你想做一些不同步的时间时,该怎么做?你不能等待任何东西,因此所有代码都在主线程上运行.如何在不使用Task.Delay()的情况下实现与此代码相同的行为?
并行和并发不是一回事.如果您希望for
并行执行循环,则Task.Run
将该工作卸载到另一个ThreadPool
线程:
static void Main(string[] args)
{
var task = Task.Run(() => DoSomething());
for (int i = 0; i < 1000; i++)
Console.Write(".");
task.Wait()
}
static void DoSomething()
{
for (int i = 0; i < 1000; i++)
Console.Write("X");
}
Run Code Online (Sandbox Code Playgroud)
async-await
用于异步操作,可以同时运行但不一定.