170 похожих чатов

Привет всем! подскажите пожалуйста следующую штуку: у меня есть кнопка по

нажатию которой запускается поток:
private void button4_Click(object sender, EventArgs e)
{
Task.Run(() =>
{
Capture.Start();
Capture.ImageGrabbed += Capture_ImageGrabbed;
});
}
и вот функция Capture_ImageGrabbed
private void Capture_ImageGrabbed(object sender, EventArgs e)
{
if (pause == true)
{
Invoke((Action)(() =>
{
label19.Text = "Статус Сохранения:\nСохранение приостановленно";
}));
ss.WaitAsync();
}
else
{
Mat m = new Mat();
Capture.Retrieve(m);
if (folder != "")
{
if (creat_auto_save == true)
{
Directory.CreateDirectory(folder + "/auto");
creat_auto_save = false;
m.ToImage<Bgr, byte>().Save(folder + "/auto/" + num + "m.jpg");
}
else m.ToImage<Bgr, byte>().Save(folder + "/auto/" + num + "m.jpg");

}
num++;
}
}
мне необходимо сделать кнопку пауза, по нажатию которой будет останавливаться этот поток, и при повторном нажатии продолжаться, ну и собственно вот логика для этой кнопки
private void button13_Click(object sender, EventArgs e)
{
if (pause == false)
{
pause = true;
button13.Text = "Продолжить";
}

else
{
pause = false;
button13.Text = "Пауза";
}
}
и вот объявление ss
SemaphoreSlim ss = new SemaphoreSlim(0);
Что я не учёл? пауза конечно не работает

13 ответов

22 просмотра

Очень стремный код

Mykyta-Kobets Автор вопроса
Phantom
Очень стремный код

Потому и спрашиваю помощи

Как минимум, у тебя WaitAsync без await

Mykyta-Kobets Автор вопроса
Phantom
Как минимум, у тебя WaitAsync без await

Для этого необходимо его поместить в метод с типом async а мне нужен возвращаемый тип void

запуск приостановка перезапуск потока. https://stackoverflow.com/questions/10469687/how-to-pause-resume-a-thread

и у тебя никакого потока нет. таски не совсем про потоки.

Phantom
Мм, блокировка потока

Так ему это и надо. Приостановить поток.

Muhammadjon
Так ему это и надо. Приостановить поток.

Ты тоже про асинхронность прочитай

Phantom
Ты тоже про асинхронность прочитай

причем тут асинхронность. он пишет про потоки.

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта