【问题标题】:C# - Server/Client multithreaded or asyncC# - 服务器/客户端多线程或异步
【发布时间】:2016-05-10 14:54:05
【问题描述】:

我的 C# UI、客户端/服务器应用程序应该是多线程的还是异步的? 现在我用多线程做到了。但这是正确的方法吗?应该 我将其更改为 async-await 模式?

【问题讨论】:

  • StackOverflow 上有很多关于这个主题的问题和答案。但是,您的问题目前过于广泛,无法作为重复链接进行链接,因此我投票结束。

标签: c# multithreading asynchronous client-server


【解决方案1】:

您好,asyn/await 模式是多线程的最佳选择。使用这种模式,即使代码异步运行,也不会创建新线程。它使用底层状态机来实现异步特性。当您处理所有请求都在线程池线程中运行的客户端/服务器应用程序时,这很好。启动一个新线程意味着您最终可能会服务更少的请求(因为请求将排队等待线程)。使用异步调用,您将每秒处理更多请求,因为在长时间运行的 I/O 或网络调用期间线程不会被阻塞。如果您有更多问题,请告诉我。谢谢

【讨论】:

  • 有没有办法在.net框架中做这样的异步操作3
  • 您好,您至少需要 .net 4.0 才能使用 TPL 和 .net 4.5 才能使用 async/await 模式。如果您使用的是 .net 3.0,您最好的选择是异步编程模型 (APM) 和基于事件的异步模式 (EAP)。但是,这需要大量的样板代码。请阅读这两个博客以获取更多信息Link1Link2。谢谢。
【解决方案2】:

如果它是一个客户端 GUI 应用程序,我会选择 async-await 方法。在 GUI 上下文中使用 async-await 感觉更“自然”。我编写了一个 Xamarin 表单应用程序,从 azure 的数据库中获取数据库条目,使用 async-await 很简单。

【讨论】:

    猜你喜欢
    • 2015-06-26
    • 2019-05-17
    • 2015-01-09
    • 2019-04-18
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    相关资源
    最近更新 更多