c# - 进行异步 Web 服务调用和在另一个线程中进行同步 Web 服务调用有什么区别?

标签 c# .net multithreading web-services asynchronous

和/或,何时使用其中任何一个? 这是偏好问题还是存在技术差异?

关于我为什么要问的一些背景: 我有一个运行 .NET 2.0 CF 应用程序的应用程序,用户正在执行多项快速操作。我不想阻止操作,但我希望 UI 显示等待图标或进度图标栏。

长时间运行的操作主要是由于网络服务调用,然后是设备本身对返回数据的一些处理。

编辑 在查看了 Jim 的回答,特别是下面的引述之后,在避免对 UI 线程施加任何负载的同时执行异步调用的最佳做法是什么?总是在单独的线程中调用 BeginGetResponse?

The BeginGetResponse method requires some synchronous setup tasks to complete (DNS resolution, proxy detection, and TCP socket connection, for example) before this method becomes asynchronous. As a result, this method should never be called on a user interface (UI) thread because it might take considerable time (up to several minutes depending on network settings) to complete the initial synchronous setup tasks before an exception for an error is thrown or the method succeeds.

最佳答案

在后台进行同步调用会在调用期间占用一个线程。

线程不是免费的。尤其是当您进行大量调用时,可能会产生大量开销。

异步调用不涉及单独的线程,因此效率更高。

关于c# - 进行异步 Web 服务调用和在另一个线程中进行同步 Web 服务调用有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16531383/

相关文章:

c# - 在文本文件中加载和访问模板变量

python - wxPython OnExit() 不停止线程?

iPhone寻路实现

c# - 使用 MVC Razor View 发送电子邮件

c# - 从 xml 注入(inject)依赖绑定(bind)

c# - 在 Silverlight 中发现有关字体的像素信息

c++ - C++中的读写互斥量

c# - 编辑 wpf 控件模板但使用原始样式

c# - 如何从 float 数组中找到最小值和最大值?

c# - 该类型是在使用辅助方法时未引用的程序集中定义的