2009-08-23 102 views
0

在玩弄我的项目使用web服务的想法我注意到,我自动创建了几个属性(方法/事件)。我可以看到Completed事件的目的,但我不确定将使用Async方法的位置。WebService异步方法问题

的WebMethod声明:服务的代码隐藏

localhost.Service1 service = new localhost.Service1();; 
    service.HelloBradAsync 
    service.HelloBradCompleted 
    service.HelloBrad 

[WebMethod] 
    public string HelloBrad() 
    { 
     return "Hello Brad"; 
    } 

消费量可能有人请解释HelloBradAsync方法的使用。

谢谢

回答

3

异步方法允许您的代码在服务器处理消息时继续执行。使用正常的service.HelloBrad代码,线程将阻塞,直到webservices返回响应。相反,如果您调用HelloBradAsync,它会立即转到您的下一行代码。服务器完成后,它将在“HelloBradCompleted”事件内响应。

这是为了使web服务在执行时不会阻塞主线程,而且绝对是正确的业务方式。它可能需要改变你的编程模式,但你会发现这些好处大于成本。

+0

“..绝对是做生意的正确方式”我不得不不同意。如果您正在UI线程中调用服务,则可能会使场景使用Async,但如果您正在阻止调用中调用服务(例如其他WebService),则没有理由执行此操作。 – 2009-08-24 01:10:06

+0

@Keivan:这是一个很好的观点 - 如果你需要返回值,然后才能移动到下一行代码,阻塞web服务调用是有价值的。 – JustLoren 2009-08-24 12:44:33