【问题标题】:ASP.NET Web Service call in another Thread另一个线程中的 ASP.NET Web 服务调用
【发布时间】:2012-01-05 21:08:58
【问题描述】:

我们正在对某些数据更新进行网络服务调用,以同步另一个数据库。此 Web 服务调用会占用一些响应时间。将它添加到线程中会有所帮助吗?这样做有什么坏处吗?如果 Web 服务调用失败,它就会失败,就是这样。这就像一个火灾和忘记电话。

【问题讨论】:

  • Mike.. 客户端是 Windows 应用程序还是 Web 应用程序?如果是 windows 应用程序,您可以安全地进行异步调用。这比使用线程更安全。但是对于 Web 应用程序.. 我建议不要使用 Ajax。
  • 这是一个 Web 应用程序回发或 ajax。

标签: asp.net multithreading web-services


【解决方案1】:

您可以通过异步回调使用异步 Web 服务调用来防止主线程阻塞。

通过对 Web 服务进行异步调用,您可以继续 在等待 Web 服务响应时使用调用线程。 这意味着用户可以继续与您的应用程序交互 在进行 Web 服务访问时不会锁定它。

来自 MSDN:Making Asynchronous Web Service Calls

【讨论】:

    【解决方案2】:

    如果挂起用户界面的时间足够长,那么建议在另一个线程上调用它。

    【讨论】:

      【解决方案3】:

      除了 Tudor 的回答,我建议您从使用 .NET 4.0.from 任务并行库中的新 Task 类开始。例如:

      Task backgroundProcess = new Task(() =>
      {
           service.CallMethod();
      });
      

      【讨论】:

        【解决方案4】:

        我强烈建议不要从 Web 应用程序中使用异步 Web 服务调用(包括在单独的线程中进行调用)。而是使用 Ajax 之类的替代方法,并从 Ajax Call 实例进行此 Web 服务调用。在 Web 上下文中没有简单的方法来处理线程和异步调用。

        【讨论】:

          猜你喜欢
          • 2012-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-27
          相关资源
          最近更新 更多