Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2017, 16:23   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Thread.Sleep(), узнать время ожидания из-вне потока

Здравствуйте, ещё раз.
Сегодня меня интересует вот что:
у меня есть поток, который выполняет определённые действия. И среди прочих действий может быть вызвана операция Thread.Sleep(<любая задержка>).
Экземпляр потока у меня есть ...
Можно ли из другого потока как либо узнать, находится ли нужный мне поток в режиме ожидания (Sleep) ? И можно ли получить оставшееся время ожидания этого потока ?
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 01.02.2017, 17:44   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Зачем? Какая цель?

Можно просто надо использовать что-то другое? Например ManualResetEvent.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 01.02.2017, 18:07   #3
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Alex11223, тот поток, который уходит в спячку на определённое пользователем время ... Мне нужно отобразить информацию о том, через сколько времени поток возобновит работу. "Отложенный запуск".
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 01.02.2017, 18:18   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну в том же ManualResetEvent вроде есть Timeout https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 01.02.2017, 21:53   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ManualResetEvent не решит беду с отображением.
хотя он хорош тем что можно сделать ожидание с возможностью прервать его.

ТС, вы в вашей программе не знаете насколько вы отправили поток в сон?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.02.2017, 22:03   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Отображением чего? Он ж и так знает на сколько в сон отправил.

Вообще если надо сделать что-то в какое-то время (завтра в 9:00), то Sleep по идее не правильно использовать для такого.

Гугл советует библиотеки типа Quartz.NET
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.02.2017, 01:22   #7
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Пепел Феникса, юзер указывает время начала, программа отсчитывает время до старта; каждую секунду в таймере сравнивается с текущим временем компьютера, и разница скидывается в лейбу ...
Так вроде работает нормально. При этом нужный мне поток просто спит.
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Sleep по идее не правильно использовать для такого
Может и неправильно, но работает ... Тяжелее отменить/передвинуть, но это тоже решаемо: отменить - перезапуском программы, передвинуть - нельзя.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 02.02.2017, 01:22   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
И можно ли получить оставшееся время ожидания этого потока ?
я про эту часть.

если нужно это состояние, просто сохраняйте его сами.
впрочем узнать что поток спит можно, но нельзя узнать причину(WaitOne/etc) так же вводят поток в сон.
Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Тяжелее отменить/передвинуть, но это тоже решаемо: отменить - перезапуском программы, передвинуть - нельзя.
пост 5, строка два.
а насчет того чтоб показать пользователю, запомните время ухода в ожидание, далее простое вычитание DateTime.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.02.2017, 01:32   #9
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а насчет того чтоб показать пользователю, запомните время ухода в ожидание, далее простое вычитание DateTime
Я так и делаю - вычитанием, но мне всё равно когда поток ушёл в ожидание; программа вычитает из указанного времени текущее. Но до этого, если текущее время (без даты) больше указанного - к указанному прибавляется один день. И так каждую секунду.
Используется TimeSpan lol=DateTime.Now.TimeOfDay .
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 02.02.2017, 10:11   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а зачем вы даты то отбрасываете? жизнь слишком простой показалась?
DateTime отлично вычитается.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог Thread.Sleep или Task.Delay vovaza29 C# (си шарп) 12 17.09.2015 21:22
работа с файлом txt с помощью потока thread в С++ helpmybrains Помощь студентам 0 04.12.2014 10:49
Истекло время ожидания (Timeout). Время ожидания истекло до завершения операции или сервер не отвечает. kgs_forum C# (си шарп) 1 20.08.2013 20:14
Thread и Queue: пересылка данных из потока в поток fshlik C# (си шарп) 5 16.02.2013 13:27
Контролируемый Sleep потока. Человек_Борща Win Api 10 26.09.2012 12:14