我是 C# 新手。 我编写了一个运行 C# 的代码,如下所示,并在主控制台中运行:
using System;
using System.Threading.Tasks;
class HelloWorld
{
static void Main()
{
Task t = example1();
}
static async Task DoWork()
{
Console.WriteLine( " Hello World! " );
for ( int i = 0 ; i < 3 ; i++ )
{
Console.WriteLine( " Working..{0} " ,i);
await Task.Delay( 1000 );
}
}
static async Task example1()
{
await DoWork();
Console.WriteLine( " First async Run End " );
}
}
任何人都可以帮助我理解第一个代码中发生了什么问题吗? 以及如何正确实现async/await? 我读过很多关于 async/await C# 的内容,但仍然感到困惑。 谢谢。
但是当我尝试在 Main() 中添加
t.Wait()
时,例如:
using System;
using System.Threading.Tasks;
class HelloWorld
{
static void Main()
{
Task t = example1();
t.Wait();
}
static async Task DoWork()
{
Console.WriteLine( " Hello World! " );
for ( int i = 0 ; i < 3 ; i++ )
{
Console.WriteLine( " Working..{0} " ,i);
await Task.Delay( 1000 );
}
}
static async Task example1()
{
await DoWork();
Console.WriteLine( " First async Run End " );
}
}
我想我没有正确意识到异步/等待。
这不是异步的事情,而是对象在 C# 中的工作方式。 你可以有类似的东西
class Cow{
void MakeSound(){}
}
因此请致电
var blackCow = new Cow();
你只是创建了一个对象。
然后你需要打电话
blackCow.MakeSound();
所以这里你需要打电话
wait()
或者像这样创建它
Task t = Task.Run(() => example1());
还有其他一些可能性。