2009-08-23 143 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