我想打电话给&等待来自Lua / MoonSharp代码的C#异步方法。
例如:
1)。
async void Test1() {
await Something();
}
2)。
async Task Test2() {
await Something();
}
然后从Lua调用它 - 1)。不等待但继续脚本执行,2)。抛出ScriptRuntimeException: cannot convert clr type System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]
MoonSharp.Interpreter.Interop.Converters.ClrToScriptConversions.ObjectToDynValue
例外。
有没有办法让这项工作?
答案 0 :(得分:0)
我终于接受了回调。不过,我认为这不是一个好的解决方案。 因此,如果有人有更好的答案,我会非常乐意改变已接受的答案。
对于任何有兴趣的人,如何使回调在MoonSharp中起作用:
Lua / MoonSharp
SomethingAsync(10, function()
SomePrintFunction('async work done')
end)
C#
async void SomethingAsync(int whatever, DynValue callback) {
await SomeAsyncWorkBeingDone();
if (callback.Type == DataType.Function) {
callback.Function.Call();
}
}
可以在doc's找到更多信息。