【问题标题】:Examples of Asynchronous Interaction in C#.Net?C#.Net 中的异步交互示例?
【发布时间】:2009-05-27 08:48:10
【问题描述】:

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

  • 异步委托
  • 异步回调

我只是想知道 .Net 还支持哪些其他异步交互方法?

非常感谢您的帮助。

问候

编辑:

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

【问题讨论】:

  • 我在这里看到了一些措辞不好的问题,但这需要饼干!
  • 这有多复杂?如果我问这个问题,请给我一份在便携式媒体上存储数据而不是使用 CD 的方法列表,你会回答:U 盘、软盘等。我想要的只是支持的方法列表.Net 中的异步交互......不是火箭科学!

标签: c# .net asynchronous delegates callback


【解决方案1】:

(我不确定我是否完全理解您提出问题的目的,但我会试一试)

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        例子:

        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 方法被命名为不一致的东西。

        更多示例:

        【讨论】:

          【解决方案5】:

          您可以基于 Expression tres 或其他 monad(目前还不允许链接,但该术语可以在 wiki 中找到,Calvin 也有关于该主题的精彩博客)

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

          您也可以通过谷歌搜索继续传递。一种编码风格,所有方法都不返回值(void),而是接受一个参数(某种委托)告诉它完成后要执行什么。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-09-29
            • 2018-01-29
            • 2011-01-07
            • 2021-06-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多