VB. Net, Не удалось отловить исключение в элементах управления. Вызвать функцию. - PullRequest
0 голосов
/ 06 марта 2020

функция ниже работает нормально, получить список папок (проверенные элементы списка) в элементе управления списком, затем загрузить изображения в элемент управления миниатюрами, я использую 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

Я хочу показать пользователю сообщение «Пользователь отменил процесс» после нажатия кнопки «Отмена», но после нажатия кнопки «Отмена» процесс остановлен, но я не могу получить исключение «Пользователь отменил процесс».

...