Примеры асинхронного взаимодействия в C # .Net? - PullRequest
0 голосов
/ 27 мая 2009

Я знаю, что возможно неявно обеспечить асинхронное взаимодействие, используя:

  • Асинхронные делегаты
  • Асинхронные обратные вызовы

Мне просто интересно, какие еще методы .Net поддерживает асинхронное взаимодействие?

Помощь с благодарностью.

Привет

EDIT:

Может быть, я не правильно объяснил себя .... Я прекрасно понимаю, что такое обработка и совпадение, я просто хотел получить список потенциальных способов реализации асинхронного взаимодействия в .Net, кроме использования асинхронных делегатов или обратных вызовов.

Ответы [ 5 ]

0 голосов
/ 27 мая 2009

вы можете использовать Expression Tress или другие монады (пока не разрешено ссылаться, но этот термин можно найти в вики и у Кальвина также есть отличный блог на эту тему)

В основном все, что позволяет создавать беспристрастное кодирование, может использоваться для асинхронных реализаций.

Вы также можете погуглить на прохождении продолжения. Стиль кодирования, при котором все методы не возвращают значения (void), а принимают параметр (своего рода делегат), сообщая ему, что выполнить после завершения.

0 голосов
/ 27 мая 2009

(я не уверен, что полностью понимаю, к чему вы стремитесь в своем вопросе, но я попробую)

Для обеспечения возможности асинхронного выполнения кода в приложениях winforms компонент BackgroundWorker довольно удобен. Я также часто использую метод ThreadPool.QueueUserWorkItem как простой способ создания метода в его собственном потоке.

0 голосов
/ 27 мая 2009

Это может быть за пределами того, что вы спрашиваете, но есть также поддержка очереди сообщений.

0 голосов
/ 27 мая 2009

Асинхронные операции в .NET запускаются путем вызова метода с именем BeginSomething, где Something может быть Invoke, Write, Send или какой-либо другой операцией.

Пример:

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.beginsend.aspx

Вы передаете свой собственный делегат, который будет выполнен после завершения операции. Затем вы можете получить результат операции, вызвав соответствующий метод EndSomething.

Пример:

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.endsend(VS.80).aspx

Шаблон обычно одинаковый независимо от выполняемой операции. Есть странности, когда метод EndSomething назван чем-то непоследовательным.

Дополнительные примеры:

0 голосов
/ 27 мая 2009

Взгляните на эту веб-страницу, она хорошо написана с хорошими примерами: http://www.yoda.arachsys.com/csharp/threads/

...