【发布时间】:2011-12-30 20:20:40
【问题描述】:
我正在尝试使用 C# 的新 await 功能来实现 NPC 脚本。 This is my proof of concept.
在NPC.cs你可以看到这个sn-p:
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 同时仍然保持线程效率更好的解决方案,请突出显示它。
谢谢!
【问题讨论】:
标签: c# scripting async-await c#-5.0