gpt4 book ai didi

c# - 如何从 Lua/MoonSharp 脚本调用和等待异步 C# 方法?

转载 作者:行者123 更新时间:2023-12-05 04:05:49 25 4
gpt4 key购买 nike

我想从 Lua/MoonSharp 代码调用并等待 C# 异步方法。

例如:

1).

async void Test1() {
await Something();
}

2).

async Task Test2() {
await Something();
}

然后从 Lua 调用它 - 1)。不等待但继续执行脚本,以及 2)。抛出 ScriptRuntimeException:无法转换 clr 类型 System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]
MoonSharp.Interpreter.Interop.Converters.ClrToScriptConversions.ObjectToDynValue
异常。

有什么方法可以实现吗?

最佳答案

我终于放弃了回调。不过,我认为这不是一个好的解决方案。 因此,如果有人有更好的答案,我会非常乐意更改已接受的答案

对于任何感兴趣的人,这里是如何使回调在 MoonSharp 中工作:

Lua/月亮尖锐

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 中找到.

关于c# - 如何从 Lua/MoonSharp 脚本调用和等待异步 C# 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50687687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com