C # Тема в теме: как получить SynchronizationContext.Current? - PullRequest
0 голосов
/ 07 октября 2009

У меня есть приложение WindowsForms, которое имеет SynchronizationContext.Current не null
Но из этого приложения WindowsForms я создаю новую тему под названием thread1
Из thread1 я создаю другую тему под названием thread2
Когда я пытаюсь POST-методы из thread2 в thread1, используя SynchronizationContext.Current, произойдет сбой, потому что SynchronizationContext.Current имеет значение null

Пожалуйста, дайте мне решение POST метод из потока 2 в поток 1, , но асинхронно

1 Ответ

0 голосов
/ 07 октября 2009

Поскольку thread1 находится в контексте синхронизации, который будет обрабатывать опубликованное сообщение, вам необходимо публиковать сообщения, используя контекст синхронизации thread1. (Представьте себе контекст синхронизации как получателя сообщения.) Поэтому вам нужно каким-то образом передать контекст синхронизации thread1 в thread2. Один из способов - передать его в качестве параметра в thread2 с помощью делегата ParameterisedThreadStart:

private void Thread2Func(object obj)
{
  SynchronizationContext parentThread = (SynchronizationContext)obj;
  // ...
  parentThread.Post(someCallback, someState);
}

и в теме1:

thread2 = new Thread(Thread2Func);
thread2.Start(SynchronizationContext.Current);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...