【问题标题】:How to create an Async/await Method for Watin?如何为 Watin 创建一个 Async/await 方法?
【发布时间】:2014-09-18 03:24:39
【问题描述】:

我正在尝试让我的主模块等待完成的方法。

看看下面的代码:

Public static void CheckAvailItem(IE browser)
    {

       for (int i = 0; i < 6; i++)
        {             
            browser.CheckBox(Find.ById("PickUpItem" + i)).Checked = true;                           
        }
    }

该方法只是检查 6 个复选框。 WatIn 的问题是每个 Checkbox 的每次“检查”之间有大约 1 秒的延迟,问题是主程序一直在运行,并没有等待六个复选框被选中。

我试图通过使用异步编程来实现这一点,但我很难创建它。

我知道 Async 关键字介于“static”和“void”之间,但我不知道将“await”关键字放在哪里。我试着把它放在“浏览器”后面,但我知道它不应该在那里。

欢迎提出任何建议。

【问题讨论】:

  • 为什么要让这个特定的方法异步?您期望从中获得什么?要了解async-await 的基础知识,请查看我的async-await general curation
  • 嗯,这个方法需要六秒钟才能完成。我不知道 WatIn 需要这么长时间来检查复选框。同时,其余代码继续执行,它不等待方法完成。我知道我可以做类似 Await Task.Delay(6000) 的事情,但时间会有所不同。我觉得有更好的方法来实现这一点。
  • 你试过用Task.Run吗?
  • 当复选框被选中时,你能以某种方式检测到吗? (任何事件或类似的东西)?
  • 没错!我需要以某种方式检测复选框何时被选中。不知道WatIn有没有这种方法。

标签: c# asynchronous async-await watin


【解决方案1】:

好的,我想通了。我包括一个 Thread.Sleep 并且它有效。

【讨论】: