Как передать управление другому потоку? - 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()
{
}
}