@Cunctator
Начинающий программист.

Как реализовать таймаут на C#?

Доброго времени суток всем читающим!

Помогите, пожалуйста, реализовать таймаут на C#.

Занимаюсь задачей автоматизации десктопного приложения с помощью фреймворка Winium.Cruciatus и требуется установить таймаут на поиск элемента приложения, то есть поиск элемента должен выполняться в пределах заданного времени и, в случае, если элемент за это время не будет найден должна формироваться ошибка, которую я потом смогу обработать.

Вот код поиска элемента, на который необходимо установить таймаут:

var OpenShift = CashierWindow.FindElementByname("Да");

{

try
    {

OpenShift.Click();
CashierWindow.FindElementByUid("6").Click();
CashierWindow.FindElementByUid("6").Click();

    }

catch

    {

Console.WriteLine("...");

    }

}
  • Вопрос задан
  • 901 просмотр
Решения вопроса 1
@Cunctator Автор вопроса
Начинающий программист.
Нашел решение через запуск асинхронной операции и установки интервала выполнения функции с помощью свойства CruciatusFactory.Settings.SearchTimeout

using System;
using System.Threading.Tasks;
using Winium.Cruciatus.Core;
using Winium.Cruciatus.Elements;
using Winium.Cruciatus;


static class IfExistsClass
{
    public static CruciatusElement GetIfExists(By element, CruciatusElement root, double timeout = 90000)

    {

        var StartDateTime = DateTime.Now;

        CruciatusFactory.Settings.SearchTimeout = (int)timeout;

        while ((DateTime.Now - StartDateTime).TotalMilliseconds < timeout) ;

        {
            var FindElement = Task<CruciatusElement>.Run(() =>


            {
                var elementFound = root.FindElement(element);
                return elementFound;


            });

            if (FindElement.Wait(TimeSpan.FromMilliseconds(30000)))
                return FindElement.Result;

            else

                Console.WriteLine("Timeout поиска элемента");


        }

        return null;

    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы