none
如何取消WCF异步进程? RRS feed

  • 问题

  •   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日 0:42

答案

  • 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相关产品感兴趣,请点击此链接,或扫描以下二维码注册获取相关信息。

    https://i.stack.imgur.com/b3pWC.jpg

    Best Regards

    Abraham

    • 已标记为答案 大海怪 2020年2月7日 9:43
    2020年2月7日 3:23
  • Hi,
    是的,异步方法一旦被调用,就会执行,遇到阻塞就会跳过并放到后台继续执行,主线程继续执行新的语句。
    如果您对Visual Studio 或Microsoft Azure相关产品感兴趣,请点击此链接,或扫描以下二维码注册获取相关信息。
    https://i.stack.imgur.com/b3pWC.jpg
    Best Regards
    Abraham 
    • 已标记为答案 大海怪 2020年2月7日 9:43
    2020年2月7日 9:16

全部回复

  • 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相关产品感兴趣,请点击此链接,或扫描以下二维码注册获取相关信息。

    https://i.stack.imgur.com/b3pWC.jpg

    Best Regards

    Abraham

    • 已标记为答案 大海怪 2020年2月7日 9:43
    2020年2月7日 3:23
  • 谢谢回复!

    通过其它方式(如事件)也无法取消异步?是不是说,用WCF异步操作,就无法取消了?


    韩立学

    2020年2月7日 7:31
  • Hi,
    是的,异步方法一旦被调用,就会执行,遇到阻塞就会跳过并放到后台继续执行,主线程继续执行新的语句。
    如果您对Visual Studio 或Microsoft Azure相关产品感兴趣,请点击此链接,或扫描以下二维码注册获取相关信息。
    https://i.stack.imgur.com/b3pWC.jpg
    Best Regards
    Abraham 
    • 已标记为答案 大海怪 2020年2月7日 9:43
    2020年2月7日 9:16