我正忙着创建一个需要ASYNC呼叫的WCF Web服务。到目前为止我已经这样做了:
public async Task<bool> sendData(Data data) {
bool sent = await Task<bool>.Factory.StartNew(() => {
return someNameSpace.ReceiveData(data);
});
return sent;
}
所以我的问题是,对dll的调用是否也需要标记为异步?
即。在dll中
public async Task<bool> ReceiveData(Data data) {
// some async code
// some code here
}
答案 0 :(得分:6)
您可以找到我的async
/await
intro helpful。我还有一篇专门处理async
WCF的帖子。
一些一般观点:
StartNew
(或Task.Run
)。Task
,无论它来自哪里。返回Task
的方法可能是async
也可能不是ReceiveData
- 它只会在 方法中产生差异。因此,如果您的SendData
是其中任何一个(它们看起来与public async Task<bool> ReceiveData(Data data);
public Task<bool> ReceiveData(Data data);
相同):
await
然后你可以SendData
中的public async Task<bool> SendData(Data data)
{
bool sent = await someNameSpace.ReceiveData(data);
... // do other stuff
return sent;
}
:
{{1}}