2012-07-20 69 views
0

我是新來的WCF和異步。我有一個長期運行方法的開始和結束服務。沒有開始異步方法

[ServiceContract] 
public interface IDocImagingStatusService 
{ 
    [OperationContract(AsyncPattern = true)] 
    IAsyncResult BeginGetDirectoryCount(AsyncCallback callback, object state); 
    IList<DirectoryCounts> EndGetDirectoryCount(IAsyncResult result); 
} 

我的客戶端需要調用BeginGetDirectoryCount,但我看到的只是一個GetDirectoryCount()方法。他們去了哪裏?

var docImgSvc = new DocImagingService.DocImagingStatusServiceClient("WSHttpBinding_IDocImagingStatusService"); 
docImgSvc.GetDirectoryCount(); 

回答

2

您可能想要確保代理是使用異步操作生成的。如果您直接使用svcutil,請參閱http://msdn.microsoft.com/en-us/library/aa347733.aspx。如果您使用Visual Studio的「添加服務引用」菜單,則需要查看高級設置以生成異步代理方法。

+0

高級設置聽起來像是直接的答案。我會在早上檢查。 – strattonn 2012-07-20 05:23:56

+0

是的,這工作表示感謝! – strattonn 2012-07-20 15:23:36

2

默認情況下,在Visual Studiosvcutil.exe工具添加服務引用對話框不爲您的服務合同異步操作。如果你想生成它們,你就需要在這兩個選項明確指定:

  • 在Visual Studio 2010中,您可以選擇添加 服務引用對話框Advanced按鈕,然後選中在高級對話框中Generate Asynchronous Operations複選框如下圖所示:

enter image description here

  • 在svcutil.exe的工具,你需要在012到使用/異步開關如下 摘錄說:

/async:生成同步和異步方法簽名。 默認值:僅生成同步方法簽名。 簡寫:/ a