как начать forms.timer внутри простой нити, у меня есть проблема , где мне нужно, чтобы запустить таймер внутри нити, как я могу это сделатьтаймер внутри нити
ответ
Лучшей альтернативой было бы использовать System.Timers.Timer
класс, который не нужен цикл обработки сообщений и выглядеть как Windows, образует один или вы можете напрямую использовать System.Threading.Timer
(Если вам нужно знать все различия между этими двумя классами есть a blog post with all the details):
using System;
using System.Threading;
class Program
{
static void Main()
{
using (new Timer(state => Console.WriteLine(state), "Hi!", 0, 5 * 1000))
{
Thread.Sleep(60 * 1000);
}
}
}
Если вы действительно хотите, чтобы System.Windows.Forms.Timer
работал, нужен цикл сообщений, вы uld запустите один в потоке, используя Application.Run
либо the parameter-less one, либо the one taking an ApplicationContext
для лучшего управления продолжительностью жизни.
using System;
using System.Windows.Forms;
class Program
{
static void Main()
{
var timer = new Timer();
var startTime = DateTime.Now;
timer.Interval = 5000;
timer.Tick += (s, e) =>
{
Console.WriteLine("Hi!");
if (DateTime.Now - startTime > new TimeSpan(0, 1, 0))
{
Application.Exit();
}
};
timer.Start();
Application.Run();
}
}
Когда вы используете потоки, вы действительно хотите использовать System.Threading.Timer.
Смотрите этот вопрос для более подробной информации: Is there a timer class in C# that isn't in the Windows.Forms namespace?
documentation говорит:
Этот таймер оптимизирован для использования в Windows Forms приложений и должны быть использованы в окне.
Используйте что-то вроде Thread.Sleep вместо этого.
- 1. Внутри нити
- 2. Периодический таймер Python генерирует слишком много нити
- 3. цикл внутри нити
- 4. Используйте замыкание внутри нити
- 5. Нити внутри процесса
- 6. Альтернатива спать внутри нити
- 7. Выход нити внутри вложенной функции
- 8. питона глобальный переменный внутри нити
- 9. Остановка нити внутри веб-контейнера
- 10. Таймер внутри цикла
- 11. Асинхронный таймер внутри функции
- 12. Таймер внутри петли?
- 13. Android - таймер внутри службы
- 14. C# Таймер внутри свойства
- 15. как таймер внутри петли?
- 16. SIP Таймер внутри ядра
- 17. Как управления страницы доступа (этикетки, таймер и т.д.) внутри нити (Web Forms ASP.NET)
- 18. избирательного прекращения нити из родительской нити/программа
- 19. JQuery GetJSON внутри SetTimeout Таймер
- 20. Как запустить таймер внутри QThread?
- 21. Как использовать таймер внутри конструктора?
- 22. Как запустить таймер внутри таймера?
- 23. setonclicklistener не работает дважды внутри текущей нити
- 24. Попытка начать нити функции члена внутри класса
- 25. Android создать обработчик внутри нити в службы
- 26. Поворот изображения для различных длительностей внутри нити
- 27. Невозможно создать обработчик внутри нити - Android
- 28. Поместите все сетевые операции внутри одной нити
- 29. Стирание нити внутри функции она делает
- 30. Покажите ProgressDialog из нити внутри службы