.NET: асинхронный сокет, обратный вызов которого выполняется в потоке графического интерфейса? - PullRequest
1 голос
/ 06 августа 2011

Я использовал для кодирования в Delphi, и я, кажется, помню, что существует класс асинхронного сокета, где после выполнения асинхронной операции (например, чтения) сообщение отправлялось в цикл сообщений приложения, иприложение получило уведомление о «окончании чтения», просто прокачав цикл сообщений.

Преимущество этого состояло в том, что обратный вызов выполнялся в том же потоке, что и тот, который выполнял вызов «чтение», что позволило избежать ночных кошмаров(например, гонки данных, необходимость маршалировать в поток GUI перед тем, как прикасаться к элементам управления и т. д.).

Возможно ли это сделать в .NET?Я искал все и не могу понять это.

1 Ответ

2 голосов
/ 06 августа 2011

Сетевой стек и стеки пользовательского интерфейса не тесно связаны, так что нет. Однако в вашем асинхронном обратном вызове вы можете использовать

someControl.Invoke(workToDo, args);

для переключения обратно (через цикл сообщений) в поток пользовательского интерфейса в winforms или Dispatcher.Invoke в WPF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...