有没有办法在Quicker步骤流程中等待异步结果?

动作开发 · 58 次浏览
FaniX 创建于 9小时18分钟前

我在C#脚本中用到了异步流程(https://getquicker.net/SubProgram?id=a1d594df-9c2f-4d5f-af42-08de92afb6f8)

async public static void Exec(Quicker.Public.IStepContext context)
{
  WebView2 wv = context.GetVarValue("webView") as WebView2;
  try {
    await wv.EnsureCoreWebView2Async();
    CoreWebView2PrintSettings printSettings = wv.CoreWebView2.Environment.CreatePrintSettings();
    ...
    CoreWebView2PrintStatus status = await wv.CoreWebView2.PrintAsync(printSettings); // 这步只有异步方法
    ....
  } finally {
    Window.GetWindow(wv).Close();
  }
}

我想根据status返回的结果进行操作。我目前想到可以通过RunSpAsync的方法,通过子程序回调进行处理,但是这样所有后续指令都要在子程序里实现,而且没有办法返回结果。请问有没有办法可以在Quicker的主步骤流程里等待异步?


回复内容
CL 7小时4分钟前
#1

目前步骤都是同步方式执行的。

在Exec里,以同步方式调用呢?   OtherFuncAsync().GetAwaiter().GetResult() 

FaniX 回复 CL 2小时43分钟前 :

在我的用例下,在C#的Exec里会造成UI死锁。不过试了一下可以让C#返回Task对象,在后面的赋值步骤里通过.GetAwaiter().GetResult()获取结果

回复主贴