Vb.net Net,无法捕获控件调用函数中的异常

Vb.net Net,无法捕获控件调用函数中的异常,vb.net,listview,async-await,anonymous-function,Vb.net,Listview,Async Await,Anonymous Function,下面的函数工作正常,在listview控件中获取文件夹列表(选中的listviewitems),然后将图像加载到缩略图控件中,我使用CancellationTokenSource取消该过程 ` Public Shared Async Function LoadFilesFromLSVAsync(_lsi As ImageListView, _lsv As ListView) As Task(Of Boolean) CTS = New CancellationTokenSo

下面的函数工作正常,在listview控件中获取文件夹列表(选中的listviewitems),然后将图像加载到缩略图控件中,我使用CancellationTokenSource取消该过程

`     Public Shared Async Function LoadFilesFromLSVAsync(_lsi As ImageListView, _lsv As ListView) As Task(Of Boolean)
        CTS = New CancellationTokenSource
        CT = CTS.Token

        Dim _lamlsi = Async Function()
                     Try
                        For Each _fldr In _lstFolderPath
                          If CT.IsCancellationRequested Then Throw New Exception("user cancelled the process")
                          If My.Computer.FileSystem.DirectoryExists(_fldr) Then
                           For Each _file In _getfiles

                          '---> want to catch this Exception and show to User in msgbox
                                  If CT.IsCancellationRequested Then Throw New Exception("user cancelled the process")

                                  _cnt% += 1
                              Next
                          End If
                        Next
                    Catch ex As Exception
                       Utility.StatusUpdate.TexUpdate.UpdateText(_lblStatus, $"error : {Err.Description }")
                       Throw '---> THROW IS NOT THROW THE EXCEPTION 
                    Finally
                    End Try
                    Return True
                  End Function

        Return Await Task.Run(Async Function()
                          If _lsi.InvokeRequired Then
                               _lsi.Invoke(Async Function() Await _lamlsi())
                           Else
                               Await _lamlsi()
                           End If
                           Return True
                        End Function, CT)
End Function
 `  Private Sub btnCancelTask_Click(sender As Object, e As EventArgs) Handles btnCancelTask.Click
      If Not IsNothing(CTS) Then
        CTS.Cancel()
        CTS.Dispose()
        CTS = Nothing
       End If
    End Sub
取消进程

`     Public Shared Async Function LoadFilesFromLSVAsync(_lsi As ImageListView, _lsv As ListView) As Task(Of Boolean)
        CTS = New CancellationTokenSource
        CT = CTS.Token

        Dim _lamlsi = Async Function()
                     Try
                        For Each _fldr In _lstFolderPath
                          If CT.IsCancellationRequested Then Throw New Exception("user cancelled the process")
                          If My.Computer.FileSystem.DirectoryExists(_fldr) Then
                           For Each _file In _getfiles

                          '---> want to catch this Exception and show to User in msgbox
                                  If CT.IsCancellationRequested Then Throw New Exception("user cancelled the process")

                                  _cnt% += 1
                              Next
                          End If
                        Next
                    Catch ex As Exception
                       Utility.StatusUpdate.TexUpdate.UpdateText(_lblStatus, $"error : {Err.Description }")
                       Throw '---> THROW IS NOT THROW THE EXCEPTION 
                    Finally
                    End Try
                    Return True
                  End Function

        Return Await Task.Run(Async Function()
                          If _lsi.InvokeRequired Then
                               _lsi.Invoke(Async Function() Await _lamlsi())
                           Else
                               Await _lamlsi()
                           End If
                           Return True
                        End Function, CT)
End Function
 `  Private Sub btnCancelTask_Click(sender As Object, e As EventArgs) Handles btnCancelTask.Click
      If Not IsNothing(CTS) Then
        CTS.Cancel()
        CTS.Dispose()
        CTS = Nothing
       End If
    End Sub

我想在单击“取消”按钮后向用户显示“用户已取消流程”消息框,但在单击“取消”按钮后,流程停止,但我无法获得“用户已取消流程”异常。

如果您想快速获得答案,我想您应该简化代码并放大问题。我们很难阅读并理解您的所有代码以提供答案。抱歉,我在发布之前已经简化了代码。代码中没有问题我希望捕获异常如果用户单击“取消”按钮,我将再次尝试简化冗长的代码。。thanks@ThomasCarlton,+1简化代码。如果您没有获得函数结果,那么您也看不到异常。