Как передать управление другому потоку? - C#
Формулировка задачи:
Всем добрый день, есть такой вопрос, не знаю как решить.
В чем суть, у меня есть основной поток, в котором создаю объект определенного класса (использую паттерн Singleton). У класса есть методы. Затем, создаются вторичные потоки. Из вторичного потока должен вызываться метод того класса, объект которого был создан в основном потоке. НО НЕ ПРОСТО ВЫЗВАТЬ НА ИСПОЛНЕНИЕ ЭТОТ МЕТОД (это довольно просто), а чтобы этот метод исполнился в ОСНОВНОМ потоке, а не во вторичном!
Скажите, есть ли какое нибудь решение, чтобы можно было передать метод на исполнению другому потоку, или нет?
Вариант, с добавлением в очередь делегатов конечно можно сделать, и постоянно проверять в основном потоке не пришел ли делегат на исполнение, если пришёл, то явно вызвать метод, но хотелось более нормальное решение этой проблемы.
Всем спасибо, если есть идеи, подскажите пожалуйста
Решение задачи: «Как передать управление другому потоку?»
textual
Листинг программы
//этот класс был создан в первичном потоке public class Class1 { //этот метод работает во вторичном потоке // и заставляет Method2 исполниться в первичном потоке public void Method1() { //способ1: Task task = new Task(Method2); TaskScheduler scheduler = TaskScheduler.FromCurrentSynchronizationContext(); task.Start(scheduler); //асинхронное выполнение в основном потоке //способ 2: SynchronizationContext context = SynchronizationContext.Current; context.Post(x => Method2(), null); //асинхронное выполнение в основном потоке } //этот метод надо выполнить в первичном потоке public void Method2() { } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д