gpt4 book ai didi

.net - WCF 3.5,异步桥接。包裹在 async-await 中

转载 作者:行者123 更新时间:2023-12-04 18:43:53 27 4
gpt4 key购买 nike

在工作中,我目前停留在 3.5,但我们正在使用 asyncbridge 进行 async-await。我们使用了很多旧的 WCF 异步调用,我想将其包装到新的 async-await 模式中。

我将其包装如下:

    // async is wrong
public /*async*/ Task<ScannedDocumentResult> GetScannedDocumentsTask(String assignmentId)
{
TaskCompletionSource<ScannedDocumentResult> tcs = new TaskCompletionSource<ScannedDocumentResult>();
EventHandler<GetScannedDocumentsCompletedEventArgs> handler = null;
handler = (o, e) =>
{
if (e.UserState != tcs)
return;

if (e.Error != null)
tcs.SetException(e.Error);
else if (e.Cancelled)
tcs.SetCanceled();
else
tcs.SetResult(e.Result);

GetScannedDocumentsCompleted -= handler;
};
GetScannedDocumentsCompleted += handler;
GetScannedDocumentsAsync(assignmentId, tcs);

return tcs.Task;
}

以下是在 3.5 WCF 代理中生成的:

GetScannedDocumentsAsync
完成扫描文件
GetScannedDocumentsEventArgs

有人告诉我这可以做得更干净,我错过了一些重要的事情吗?

另外,这个方法会执行异步吗?使用 async 运算符编译只会产生错误。

最佳答案

你也应该得到一个 BeginGetScannedDocumentsEndGetScannedDocuments ,您可以使用 TaskFactory.FromAsync 包装.我有一篇博客文章显示 how to use task wrappers with old-school (pre-4.5) WCF (在服务器和客户端上)。

关于.net - WCF 3.5,异步桥接。包裹在 async-await 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18350757/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com