Для аргумента рассмотрим поток пользовательского интерфейса как поток, который имел вызов Application.Run() или один из них, вызывающий его, и имеет активный цикл сообщений.
Есть ли способ обнаружения, если мы в настоящее время выполняем такой поток?
Причина, по которой я хочу, это потому, что у меня есть класс с частной функцией, которая работает долго. Сам класс уже многопоточен, и использование этого класса таково, что его можно использовать либо из пользовательского интерфейса, либо из фоновых потоков, выполняющих обработку. Эта функция также попадает в эту сеть. Но я не хочу, чтобы он блокировал поток пользовательского интерфейса. Поэтому я хочу определить, работает ли я в потоке пользовательского интерфейса, и если да, то перепрограммируйте вызов функции в фоновый поток (возможно, ThreadPool, но это не проблема для этого обсуждения). Это вполне корректно, но фоновые потоки, вероятно, полагаются на вывод функции, поэтому блокировка для них лучше, тогда как поток пользовательского интерфейса обращается к нему более "заново" и "забывает".