|
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 28
|
|
Как кнопкой прервать thread.sleep или await task.delay?27.03.2021, 09:46. Показов 3736. Ответов 13
Метки нет (Все метки)
C# Windows Forms как кнопкой досрочно прервать thread.sleep или await task.delay? Обновляю бд каждые 10 секунд, если остановить и тут же запустить обновление, будет выполняться два, так как 1 поток будет вы висеть, а получив кнопкой значение тру, продолжиться, также запуститься новый поток. как этого избежать?
0
|
|
| 27.03.2021, 09:46 | |
|
Ответы с готовыми решениями:
13
Thread.Sleep в главном потоке или как сделать нормальную задержку
Аналог Thread.Sleep или Task.Delay |
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
|
| 27.03.2021, 11:56 | |
|
У
Task.Delay имеются перегрузки с CancellationToken
0
|
|
|
|
||
| 27.03.2021, 12:39 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 28
|
||||||
| 27.03.2021, 15:26 [ТС] | ||||||
Добавлено через 11 минут Someone007, посмотрите мой код пожалуйста, что то совсем не могу понять, где я свернул не туда
0
|
||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
|
| 27.03.2021, 16:23 | |
|
Зачем тут вообще все эти Task.Delay? Что вы хотите отменить: запрос к базе, или все эти задержки?
0
|
|
|
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 28
|
|
| 27.03.2021, 16:35 [ТС] | |
|
Отменить запрос к базе, но запрос стоит каждые 5 секунд, для получения важной информации. Мне нужна кнопка завершения запросов
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
||||||
| 27.03.2021, 16:49 | ||||||
|
В текущем виде сам запрос не отменить. И я даже не знаю поддерживает ли какой-то из методов, используемых вами для обращения к базе отмену, скорее всего нет...
Сам запрос долгий? Если нет, то можно и не заморачиваться с его отменой... А чтобы нельзя было проблем с запуском нескольких потоков, можно просто блокировать кнопку пока не завершится отмена...
0
|
||||||
|
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 28
|
|
| 27.03.2021, 17:18 [ТС] | |
|
Запрос выполняется быстро, проблема в том что если в while я передаю true, и сразу нажимаю старт, начинают выполняться сразу два запроса. Так как в пока программа висела в delay, 5 секундном, запустился второй поток, а первый остался т.к. While не прервался. Получается надо прервать 5 секундный takj. Delay
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
||
| 27.03.2021, 17:49 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 28
|
||||||
| 27.03.2021, 21:49 [ТС] | ||||||
0
|
||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
|
| 27.03.2021, 22:26 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 28
|
|
| 28.03.2021, 00:27 [ТС] | |
|
Я не совсем разобрался, сейчас буду дальше тыкать, спасибо за терпение
Добавлено через 47 минут А как прервать например task.delay(10000) ?
0
|
|
|
|
|||||||
| 28.03.2021, 01:33 | |||||||
Сообщение было отмечено fry23 как решение
Решение![]() Сделайте хотя бы так... (ели шо, это не я писал. Точнее -- по хорошему все это безобразие нужно инкапсулировать в отдельный класс)
1
|
|||||||
|
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 28
|
|
| 28.03.2021, 15:25 [ТС] | |
|
Спасибо большое, буду пробовать
Добавлено через 5 часов 26 минут Wolfdp, Работает как часы, теперь везде буду такой код писать. Спасибо огромное
0
|
|
| 28.03.2021, 15:25 | |
|
Помогаю со студенческими работами здесь
14
Как работает await Task.Delay() Прервать ожидание Thread.Sleep Id текущего таска равен Null при использовании await Task.Delay(100); Аналог Thread.Sleep в Task Дождаться выполнения Task без Thread.Sleep? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|