Варианты паузы на C#

soprano

Client
Регистрация
25.08.2011
Сообщения
925
Благодарностей
1 043
Баллы
93
Вот есть вариант паузы
C#:
Thread.Sleep(10000);
Ставлю, пока выполняется действие.
Но действие заканчивается, допустим, через 6 секунд.
А пауза длится 10 сек. И 4 секунды - дармовой простой получается.
На Selenium есть вариант, когда пауза заканчивается с выполнением действия, т.е. не теряются лишние секунды.
А есть ли такое на C#?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 732
Баллы
113
Вот есть вариант паузы
C#:
Thread.Sleep(10000);
Ставлю, пока выполняется действие.
Но действие заканчивается, допустим, через 6 секунд.
А пауза длится 10 сек. И 4 секунды - дармовой простой получается.
На Selenium есть вариант, когда пауза заканчивается с выполнением действия, т.е. не теряются лишние секунды.
А есть ли такое на C#?
цикл for или while , в паузу на 1000 и опрос нужных условий
 

soprano

Client
Регистрация
25.08.2011
Сообщения
925
Благодарностей
1 043
Баллы
93

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 430
Баллы
113
Для ожидания загрузки страницы есть методы WaitDownloading(), WaitInteractive(), WaitPreComplete() - выбирайте, что по душе.
Но я бы и сам конечно ставил паузу и гонял ее в цикле до критического количества выполнений(мурка на баяне), чтобы в случае чего перезагрузить страницу или еще что..
А так, вообще-то непонятно, что за действие Вы там дожидаетесь?
 

soprano

Client
Регистрация
25.08.2011
Сообщения
925
Благодарностей
1 043
Баллы
93
Создание видео ffmpeg, ролики разной длины, одни за 20 сек, другие за 50 секунд делаются.
Поэтому и пауза такая нужна, до завершения действия.
 

artomka

Client
Регистрация
23.08.2018
Сообщения
159
Благодарностей
94
Баллы
28
ffmpeg работает через cmd.

просто ставьте Process.Start(startInfo).WaitForExit(); и код будет ждать пока видос не сгенерится.

пример:
string command = "/c echo y |ffmpeg -i " + project.Variables["vid1"].Value + " -i " + project.Variables["pic1"].Value + " -filter_complex \"[0:v][1:v] overlay=250:250:enable='between(t,0,20)'\" -pix_fmt yuv420p -c:a copy " + project.Variables["vid3"].Value;
    System.Environment.CurrentDirectory = project.Variables["folder_for_vids"].Value;
    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.FileName = "cmd.exe";
    startInfo.Arguments = command;
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
    Process.Start(startInfo).WaitForExit();
В примере ffmpeg у меня прописан в PATH поэтому путь к нему указывать не нужно.
 
Последнее редактирование:
  • Спасибо
Реакции: Yuriy Zymlex и Alexmd

devffy

Client
Регистрация
16.03.2019
Сообщения
542
Благодарностей
188
Баллы
43
Создание видео ffmpeg, ролики разной длины, одни за 20 сек, другие за 50 секунд делаются.
Поэтому и пауза такая нужна, до завершения действия.
Скрипт мб намудрил? У меня к примеру видосы ffmpeg по порядку делал
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 619
Благодарностей
3 423
Баллы
113
ffmpeg, ролики разной длины, одни за 20 сек, другие за 50 секунд делаются.
Поэтому и пауза такая нужна, до завершения действия.
Что-то вы явно не то делаете. Вариант сниппета с ожиданием подсказали выше.
 

soprano

Client
Регистрация
25.08.2011
Сообщения
925
Благодарностей
1 043
Баллы
93
C#:
WaitForExit();
не срабатывает, не генерится ролик. Только когда паузу в 60 секунд ставлю после старта, всё получается.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 619
Благодарностей
3 423
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)