от
Я знаю, что в .В сети есть три типа таймера (см. сравнение классов таймер .Библиотека классов). Я выбрал резьбовой таймер, как и другие типы могут дрейфовать, если основной поток занят, и мне нужно, чтобы быть надежным. Как этот таймер работает в управление таймер ставится на другой поток, так что всегда можете поставить галочку вместе с работой начнется завершена родительского потока, когда он не занят. Проблема с этот таймер в консольном приложении, это то, что пока таймер тикает на другой поток основной поток ничего не делает для закрытия приложения. Я пробовал добавлять петли
while true
, но тогда основной поток не слишком занят, когда таймер не сработал.

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

2 Ответы

0 голосов
от
Вы можете использовать что-то вроде
Console.ReadLine()
, чтобы блокировать основной поток, так что других фоновых потоков (например, потоков таймер) все равно будет работать. Вы также можете использовать AutoResetEvent, чтобы заблокировать его выполнения, то (когда вам нужно) можно вызвать метод set() метод для этого объекта AutoResetEvent, чтобы освободить основной поток. Также убедитесь, что ваша ссылка на объект timer не выйдут из области видимости и собирали мусор.
0 голосов
от
Рекомендуется использовать manualresetevent для блокировать основной поток в конце его обработки, и вызов
Reset()
на нем после обработки таймера закончена. Если это то, что нужно постоянно работать, попробуйте перенести это в процессе обслуживания, а не консольное приложение.
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...