Jak wykryć, czy mamy wątek interfejsu użytkownika?

Dla argumentu rozważ wątek interfejsu użytkownika jako wątek, do którego zadzwonionoApplication.Run() lub jedno z jego przeciążeń zostało wywołane i ma aktywną pętlę komunikatów.

Czy istnieje sposób na wykrycie, czy obecnie wykonujemy na takim wątku?

Powodem, dla którego tego chcę, jest to, że mam klasę z długo działającą funkcją prywatną. Sama klasa jest już wielowątkowa, a użycie tej klasy jest takie, że można jej użyć zarówno z interfejsu użytkownika, jak iz wątków wykonujących przetwarzanie w tle. Ta funkcja również wpada w tę sieć. Ale nie chcę, aby blokował wątek interfejsu użytkownika. Chcę więc wykryć, czy uruchomiłem wątek interfejsu użytkownika, a jeśli tak, rozwidlić wywołanie funkcji na wątek tła (prawdopodobnieThreadPool, ale to nie jest kwestia dla tej dyskusji). Jest to całkowicie dobrze zachowane, ale wątki w tle prawdopodobnie opierają się na wynikach funkcji, więc blokowanie dla nich jest lepsze, podczas gdy wątek UI uzyskuje dostęp do niego w sposób bardziej „ustaw i zapomnij”.

questionAnswers(4)

yourAnswerToTheQuestion