C#-服务器/客户端多线程或异步

C#-服务器/客户端多线程或异步,c#,multithreading,asynchronous,client-server,C#,Multithreading,Asynchronous,Client Server,我的C#UI客户端/服务器应用程序应该是多线程还是异步的? 现在我已经用多线程实现了。但这是正确的方法吗?应该 我将其更改为异步等待模式?如果它是一个客户端GUI应用程序,我会选择异步等待方法。在GUI上下文中使用async await感觉更“自然”。我已经编写了一个Xamarin表单应用程序,从azure中的一个db中获取db条目,使用async await实现这一点很简单 嗨,asyn/await模式是多线程的最佳选择。使用此模式,即使代码异步运行,也不会创建新线程。它使用底层状态机来实现异

我的C#UI客户端/服务器应用程序应该是多线程还是异步的? 现在我已经用多线程实现了。但这是正确的方法吗?应该
我将其更改为异步等待模式?

如果它是一个客户端GUI应用程序,我会选择异步等待方法。在GUI上下文中使用async await感觉更“自然”。我已经编写了一个Xamarin表单应用程序,从azure中的一个db中获取db条目,使用async await实现这一点很简单

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

关于StackOverflow这个话题,有很多问题和答案。但是,您的问题目前太广泛,无法作为重复链接,因此我将投票结束。在.net framework 3Hi中是否有方法执行此类异步操作,您至少需要.net 4.0才能使用TPL,而.net 4.5才能使用异步/等待模式。如果您使用的是.NET3.0,那么最好的选择是异步编程模型(APM)和基于事件的异步模式(EAP)。但是,这需要很多样板代码。请阅读这两个博客了解更多信息。非常感谢。