Текстовое поле не обновляется после прерывания потока - PullRequest
0 голосов
/ 05 марта 2019

У меня есть поток, который выполняет подпрограмму, и в подпрограмме я обновляю текстовое поле во время выполнения цикла «Делать пока».Затем я создал кнопку отмены, чтобы прервать поток.

Когда кнопка нажата, поток прерывается, но текстовое поле (Status_Txtbox.Text) не обновляется с сообщением «Разбор прекращен».Я попытался выполнить отладку, и я вижу, что код выполняется отлично, и если условие для thread.isalive удовлетворяет, но не уверен, почему текстовое поле не обновляется с сообщением.

Есть идеи, как обновить текстовое поле после прерывания потока?

Dim thrd1 As Thread
Private Sub Parse_Btn_2G_Click(sender As Object, e As RoutedEventArgs) Handles Parse_Btn_2G.Click
    Parse_Btn_2G.IsEnabled = False
    Scan_Btn_2G.IsEnabled = False
    cancel_Btn_2G.IsEnabled = True
    Dim start As DateTime = DateTime.Now
    Dim elapsedtime As Double
    Dim action As Action
    thrd1 = New Thread(Sub()
                           ButtonClickWork.DoWork()
                           action = Sub()
                                        Status_Txtbox.Text = "Parsing Data, Please wait..."
                                    End Sub
                           Me.Dispatcher.Invoke(action)
                       End Sub)
    thrd1.Start()
    elapsedtime = (DateTime.Now.Subtract(start).TotalSeconds) / 60
    elapsedtime = Math.Round(elapsedtime, 2)
    Status_Txtbox.Text = " Managed Objects in XML, total time elapsed is" & elapsedtime
End Sub
  Private Sub Cancel_Btn_2G_Click(sender As Object, e As RoutedEventArgs) Handles cancel_Btn_2G.Click
    Try
        If cancel_Btn_2G.IsEnabled = True Then
            If MsgBox("Do you really want to exit Parsing?", vbYesNo) = MsgBoxResult.Yes Then
                Parse_Btn_2G.IsEnabled = True
                Scan_Btn_2G.IsEnabled = True
                cancel_Btn_2G.IsEnabled = False
                thrd1.Abort()
                thrd1.Join()
                If thrd1.IsAlive = False Then
                    Status_Txtbox.Text = "Parsing is terminated"
                End If
            End If
        End If
    Catch ex As ThreadAbortException
        Status_Txtbox.Text = "Parsing is terminated"
    End Try
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...