我是WCF和Async的新手。我有一个长期运行方法的开始和结束服务。
[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();
答案 0 :(得分:2)
您可能希望确保使用异步操作生成代理。如果您直接使用svcutil,请参阅http://msdn.microsoft.com/en-us/library/aa347733.aspx。如果您使用的是Visual Studio的“添加服务引用”菜单,则需要在“高级”设置中查找生成异步代理方法的选项。
答案 1 :(得分:2)
默认情况下,Visual Studio
和svcutil.exe
工具中的“添加服务参考”对话框不会为您的服务合同生成异步操作。如果要生成它们,则需要在两个选项中明确指定:
Advanced
按钮
“服务参考”对话框,然后选中“高级”对话框中的Generate Asynchronous
Operations
复选框,如下所示:
/async
:生成同步和异步方法签名。
默认值:仅生成同步方法签名。
简表:/ a