我正在尝试使用 C# 的新await
功能实现 NPC 脚本。这是我的概念证明。
在NPC.cs
你可以看到这个片段:
public async void Run(INPC npc)
{
npc.Say("Hello!");
await npc.WaitForOk();
npc.Say("This is an example of some weird crap.");
await npc.WaitForOk();
npc.Say("Bye.");
await npc.WaitForOk();
}
在一个真实的例子中,该脚本将使用 IronPython 之类的脚本语言来实现。即使它将来可能支持async
/await
关键字,但每次调用都必须这样做非常麻烦和烦人。
我尝试让另一种方法异步并执行等待,并让脚本简单地调用它,但由于方式async
/await
工作方式,脚本方法(Run
)将简单地继续而不会暂停/阻塞。
有没有办法避免必须使脚本方法异步并且必须await
在每次调用之前使用,同时仍然保留类似协程的功能?
此外,如果有比使用async
/await
同时仍然具有线程效率的更好的解决方案,请突出显示它。
谢谢!