Повышение значения информационного состояния из вызова функции в потоке - PullRequest
0 голосов
/ 04 марта 2012

Я вызываю функцию класса в функции потока.Я использую метод invoke для отправки значения на индикатор выполнения в главной форме, и я не знаю, как это сделать в другой функции класса, вызываемой функцией потока.

Моя цель - отправитьзначение для индикатора выполнения в главной форме из функции потока и даже из функции, вызываемой функцией потока.

Мой код: 'Invoke sub Public Sub UpdPgEvent (ByVal value As Integer) Me.pgFindEvent.Value =Значение End Sub

' Sub started by the thread
Private Sub ThreadTaskMonitor()
    Dim ConnectURL As String

    ' Delegate progressbar
    Dim DelegPgEvent As DelegueUpgPbEvent = New DelegueUpgPbEvent(AddressOf UpdPgEvent)

    ' This invoke works great
    Me.Invoke(DelegPgEvent, 10)
    ConnectURL = "..."
    Me.Invoke(DelegPgEvent, 20)

    ' What I want is to send state value from this call to the main form progressbar
    urlr.JsonGetEvents(ConnectURL)
    Dim table_res As List(Of monitor_table) = urlr.ConstructDataMonitor()
    Me.Invoke(DelegPgEvent, 80)
    Me.MonitorBindingSource.DataSource = table_res
    Me.Invoke(DelegPgEvent, 90)
    mon.dbMonitor.DataSource = Me.MonitorBindingSource
    Me.Invoke(DelegPgEvent, 0)
End Sub

Спасибо за помощь

1 Ответ

0 голосов
/ 04 марта 2012

Вам нужно передать основную форму в класс.

Вот пример.

'Main Form
Public Class Form1

Delegate Sub dlUpdateUI(ByVal sText As String)


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim t As Thread

    Dim clsfn As New clsURLfn(Me)

    t = New Thread(AddressOf clsfn.doit)
    t.Start()


End Sub

Public Sub updateUI(ByVal sText As String)

    If Me.InvokeRequired Then

        Me.Invoke(New dlUpdateUI(AddressOf updateUI), sText)
    Else

        Me.Text = sText

    End If



End Sub

End Class  'End Main Form

'Other Class
Public Class clsURLfn

Dim Mainfrm As Form1

Public Sub New(ByRef mainform As Form)

    Mainfrm = mainform

End Sub

Public Sub doit()

    Mainfrm.updateUI("New Text")

End Sub

End Class  'End Other Class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...