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

soprano

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

Phoenix78

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

soprano

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

Alexmd

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

soprano

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

artomka

Client
Регистрация
23.08.2018
Сообщения
159
Благодарностей
93
Баллы
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
Сообщения
541
Благодарностей
188
Баллы
43
Создание видео ffmpeg, ролики разной длины, одни за 20 сек, другие за 50 секунд делаются.
Поэтому и пауза такая нужна, до завершения действия.
Скрипт мб намудрил? У меня к примеру видосы ffmpeg по порядку делал
 

Yuriy Zymlex

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

soprano

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

Yuriy Zymlex

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

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