小编use*_*229的帖子

ContinueWith 作为 await 运算符的替代

我的应用程序使用脚本。到目前为止,我已经将 C# 用于脚本并使用CodeDomProvider. 但是,我一直在考虑使用NLuafork( 的 fork LuaInterface)切换到 Lua ,因为编写脚本要容易得多,而且我熟悉语法。

但是,我面临一个问题。目前,我有一个asynchronous方法可以返回一个Task<bool>. 它使用一个TaskCompletionSource对象并返回它的Result. 这样一来,我可以阻止脚本的执行,因为这里等到Result了的TaskCompletionSource目标已定,然后才返回此Result

现在,有了 Lua - 它是不同的。我显然不能使用await运算符,因为它是 C# 5.0 的语法,而你不能在 Lua 中使用它。所以这就是为什么我要问是否有解决方法。我希望能够获得与我的旧代码(发布在这篇文章下方)相同的结果,而无需使用await运算符。有人告诉我,我可以用 来做到这一点Task.ContinueWith,但我不熟悉这个,而且网上的例子很乏味。如果有人可以用我的代码向我展示一个示例,那就太好了。

这是我的方法:

public async Task<bool> ReturnResult()
{
     this.Response = new TaskCompletionSource<bool>();

     return await this.Response.Task;
}
Run Code Online (Sandbox Code Playgroud)

这是我在脚本中使用它的方式:

var result = await ReturnResult();
Run Code Online (Sandbox Code Playgroud)

Result该的TaskCompletionSource目标是通过我的代码另一部分设置。

基本上,如果您仍然无法理解我想要实现的目标 - 一种停止执行的方法,直到代码的另一部分设置了响应。但是,它必须是asynchronous,因为我不希望我的主线程卡住。

编辑:尝试了 JonSkeet …

c# lua asynchronous task

1
推荐指数
1
解决办法
1306
查看次数

标签 统计

asynchronous ×1

c# ×1

lua ×1

task ×1