Я пытаюсь использовать отдельный поток для обработки определенных событий в VB.Net. Идея в том, что я не хочу, чтобы основное приложение задерживалось, если конкретный обработчик событий занимает некоторое время, чтобы закончить. Как заставить мой основной цикл потока приостановить поток, позволяя ему обрабатывать события, когда они происходят?
Когда я создаю приложение Windows Forms, существует поток пользовательского интерфейса, который обрабатывает события пользовательского интерфейса. Я не представляю, что этот поток постоянно опрашивает некоторую переменную, чтобы увидеть, нажал ли кто-то кнопку. Я предполагаю, что поток приостановлен, пока ОС не скажет, что есть что-то делать. Я пытался выяснить, как убедиться, что мои обработчики событий не выполняются потоком пользовательского интерфейса. Из того, что я прочитал, я могу сделать это, подняв события из другого потока. Но что этот поток делает, ожидая других событий, просто завершается?
Я хотел знать, как создать поток, который работает как поток пользовательского интерфейса, только он обрабатывает события, которые я хочу, чтобы он обрабатывал. Я не уверен, как события работают в .Net. Я понимаю, что обработчики событий запускаются в потоке, который вызывает событие. Я считаю, что .Net выделяет потоки из некоторого пула потоков для обработки событий, таких как события таймера. Я не совсем понимаю, как это работает, и что эти потоки делают, когда они не обрабатывают события.