积极答复者
如何取消WCF异步进程?

问题
-
Friend Async Function GetTtAsync(dt As TtDataTable) As Threading.Tasks.Task(Of Integer)
Dim client AS New Client()
Try
Dim t = Await client.GetTtAsync()
client.Close()
dt.Merge(t)
Catch ex As Exception
Finally
client.Abort()
End Try
Return dt.Rows.Count
End Function
类似这样一个函数,查询某表数据,当调用:Dim t = Await GetTtAsync(dt) 后,如何随时取消它?
韩立学
- 已编辑 大海怪 2020年2月6日 23:35
答案
-
Hi,
当你使用await关键字等待任务完成,就无法取消了。 这个异步的用法,在我看来是,先获得task<T>,然后去做其他耗时任务,最后再获取该Task<T> Result属性,或者选择等待(await)再输出结果。因为在获得Task<T>以后,会运行异步方法里面的耗时任务。这样节省了异步方法里面的耗时。
参看这个链接。
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/async/task-asynchronous-programming-model如果您对Visual Studio 或Microsoft Azure相关产品感兴趣,请点击此链接,或扫描以下二维码注册获取相关信息。
Best Regards
- 已标记为答案 大海怪 2020年2月7日 9:43
全部回复
-
Hi,
当你使用await关键字等待任务完成,就无法取消了。 这个异步的用法,在我看来是,先获得task<T>,然后去做其他耗时任务,最后再获取该Task<T> Result属性,或者选择等待(await)再输出结果。因为在获得Task<T>以后,会运行异步方法里面的耗时任务。这样节省了异步方法里面的耗时。
参看这个链接。
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/async/task-asynchronous-programming-model如果您对Visual Studio 或Microsoft Azure相关产品感兴趣,请点击此链接,或扫描以下二维码注册获取相关信息。
Best Regards
- 已标记为答案 大海怪 2020年2月7日 9:43