C#.Net中的异步交互示例?

时间:2009-05-27 08:48:10

标签: c# .net asynchronous delegates callback

我知道可以使用以下方式隐式提供异步交互:

  • 异步代理
  • 异步回调

我只是想知道.Net支持异步交互的其他方法是什么?

非常感谢。

此致

编辑:

也许我没有正确解释自己...... 我完全理解线程和并发性,除了使用异步委托或回调之外,我只想要一份在.Net中实现异步交互的潜在方法列表。

5 个答案:

答案 0 :(得分:0)

看看这个网页,它写得很好,有很好的例子: http://www.yoda.arachsys.com/csharp/threads/

答案 1 :(得分:0)

这可能超出了您的要求,但也支持消息队列。

答案 2 :(得分:0)

.NET中的异步操作是通过调用名为BeginSomething的方法启动的,其中Something可能是InvokeWrite,{{1}或其他一些操作。

示例:

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

您传递自己的委托,该委托将在操作完成时执行。然后,您可以通过调用相应的方法Send来获取操作的结果。

示例:

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

无论正在执行的操作如何,模式通常相同。有些奇怪的地方,EndSomething方法被命名为不一致的东西。

更多例子:

答案 3 :(得分:0)

(我不确定我完全理解你在问题中的目的,但我会试一试)

为了允许在winforms应用程序中执行异步代码,BackgroundWorker组件非常方便。我还经常使用ThreadPool.QueueUserWorkItem方法作为在自己的线程上生成方法的简单方法。

答案 4 :(得分:0)

你可以基于表达发辫或其他monad(还不允许链接但是这个术语可以在维基找到,而Calvin也有一个关于这个主题的好博客)

基本上所有允许你进行比较编码的东西都可以用于异步实现。

你也可以google继续传球。一种编码风格,其中所有方法都不返回值(void),但是接受一个参数(一个类别的委托),告诉它完成后要执行的内容。