Timer 执行函数的时间

Timer 执行函数的时间,timer,Timer,我正在做一个机器人(我在C#的第一个项目),它应该点击一些图片。其中一个将打开一个新页面并对其拍照,但由于打开页面的延迟,我需要一个计时器来等待它完全加载 Point location; bool success; success = search(Properties.Resources.background, screenshot(), out location); if (success == true) { execute(location); success = sea

我正在做一个机器人(我在C#的第一个项目),它应该点击一些图片。其中一个将打开一个新页面并对其拍照,但由于打开页面的延迟,我需要一个计时器来等待它完全加载

Point location;
bool success;
success = search(Properties.Resources.background, screenshot(), out location);
if (success == true)
{
    execute(location);
    success = search(Properties.Resources.target, screenshot(), out location);
    if (success == true)
    {
        execute(location);
        ///////--------------TIMER 5s------------------///////
        success = search(Properties.Resources.close, screenshot(), out location);
        if (success == true)
        {
            execute(location);
        }
    }
    else
    {
       //code
    }
}
else
{
    //code
}
所以

搜索[第一个]功能告诉屏幕上是否有名为背景的图像。如果是,单击它


搜索[第二个]功能告诉屏幕上是否有名为target的图像。如果是,它点击它。当它点击它时,另一个页面将打开,现在我需要一个计时器,然后再搜索该页面的关闭按钮…

您不需要计时器。您可以使用
Thread.Sleep

Thread.Sleep(5000);
success = search(Properties.Resources.close, screenshot(), out location);

使用Thread.Sleep有点暴力,但对于您的目的来说已经足够好了。(如果页面在你睡眠的多少秒内没有加载,这仍然可能失败)如果这只是一个实验,或者某个每次只需要运行一个线程的东西,那没关系


一旦你对C语言有了更多的经验,你可能会想尝试重写它来使用Task和async/await。这样,您可以启动execute方法,并让系统释放主线程,直到execute完成。使用await关键字将使系统继续执行第二个execute下面的代码,以便在execute完成时在后台线程上运行。这样就不会冻结前台主线程。从磁盘或网络读取数据是异步代码的一个很好的应用。

huh??????你为什么需要计时器?你是在UI线程上执行的吗?是的,我想学习尽可能多的东西,因为我想为游戏创建一个机器人。我从一件简单的事情开始:)是的,但是人为的停顿不是一个好的教训。我知道存在着不同的更好的方法。例如,直接使用页面发送给您的HTML代码,但该游戏使用的是adobe flash,我不确定是否可以使用其他方法?然后就没有UI线程了,你的问题太模糊和混乱了。为什么这是一个解决方案?随意安排睡眠是没有意义的,很少能解决实际问题。问题很不清楚。在UI线程上暂停肯定是一种反模式