Как я могу открыть новую форму из темы? - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть клиент асинхронного сокета, и когда приходит пакет, мне нужно обработать его, открыв новую форму.

Однако, поскольку он находится в потоке, новая форма зависает и не отвечает.

Как я могу создать и открыть новую форму из асинхронного обратного вызова?

1 Ответ

1 голос
/ 29 февраля 2012

Используйте Dispatcher, чтобы переключиться с фона на ваш поток пользовательского интерфейса.

//This has to be done on the UI-Thread, before calling the async method
var dispatcher = Dispatcher.CurrentDispatcher;

//Now, in your async callback, do something like this
private void AsyncCallback(IAsyncResult result){
    dispatcher.Invoke(new Action(() =>
    {
        //Create your form Here           
    }
}

Если вы хотите, чтобы ваш фоновый поток ожидал, пока форма не будет создана и показана, используйте Invoke (), иначе используйтеНачинают

...