Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 08.05.2019, 17:34   #1
mrdgm2025
Новичок
Джуниор
 
Регистрация: 08.05.2019
Сообщений: 1
Восклицание Код останавливатеся

Бот иногда зависает на этой части кода по вине 3-ей стороны
как добавить правило типа - если код выполняется больше 1 минуты, то пропуск этой задачи
Код:
            while (true)
            {
                try
                {
                    gameDiv = driver.FindClickableElement(gameRowPath, GlobalTimeouts.SmallTimeout);
                    break;
                }
                catch
                {
                    var loader = driver.FindElement(By.XPath("//div[@class='virtual-scrolling-bar']"));
                    driver.ScrollToElement(loader);
                    await Task.Delay(GlobalTimeouts.SmallTimeout);
                }
            }

Последний раз редактировалось mrdgm2025; 08.05.2019 в 17:55.
mrdgm2025 вне форума   Ответить с цитированием
Старый 08.05.2019, 17:38   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,037
По умолчанию

https://xpinjection.com/articles/wai...-in-webdriver/
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 20.05.2019, 22:53   #3
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,285
По умолчанию

Цитата:
Сообщение от mrdgm2025 Посмотреть сообщение
как добавить правило типа - если код выполняется больше 1 минуты, то пропуск этой задачи
Самый простой способ - такты. Перед началом цикла ставим текущую метку времени. На каждой итерации цикла проверяем: если разница между текущим и изначальным временем больше требуемой - break.
Код:
long timeStart=DateTime.Now.Ticks;
while (true)
{
	// здесь ваш код
	if (DateTime.Now.Ticks-timeStart>600000000) // 600 миллионов тактов = одна минута
		break;
}
Подробнее про такты.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 21.05.2019 в 11:55.
OmegaBerkut вне форума   Ответить с цитированием
Старый 23.05.2019, 19:33   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Самый простой способ - такты
самое просто и удобное не опускаться до тиков. а использовать TimeSpan напрямую.
все тоже самое, но без тиков.
Код:
var timeStart=DateTime.Now;
var timeout = TimeSpan.FromMinutes(1);
while (true)
{
	// здесь ваш код
	if (DateTime.Now-timeStart>timeout ) 
		break;
}
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 23.05.2019, 23:40   #5
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,285
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
все тоже самое
Ну, не совсем; вы используете две переменных, я - одну. Но это придирка.
На деле же, с тактами и числами с "простыми" переменными - более наглядно; да и лично мне всегда было проще считать тактами.
TimeSpan и DateTime только в случае необходимости вывода соответствующей информации. Или при вводе этой же информации пользователем, для простого формирования информации о всё тех же тактах =)
Подпись ? Не, не слышал ...
OmegaBerkut вне форума   Ответить с цитированием
Старый 24.05.2019, 01:22   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,515
По умолчанию

Забавно ваши аватарки смотрятся вместе ))
Black Fregat на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


08:08.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.