Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从螺纹接头更新第二个表单上的文本框不工作VB.Net_Vb.net_Multithreading - Fatal编程技术网

从螺纹接头更新第二个表单上的文本框不工作VB.Net

从螺纹接头更新第二个表单上的文本框不工作VB.Net,vb.net,multithreading,Vb.net,Multithreading,我有两个表格:Form1和StreamFrm。 从Form1上的螺纹接头,我需要更新StreamFrm上的文本框。 我尝试了以下方法: Private Sub timerTicks() Handles EventTimer.Tick If IsCheckingTable = False Then StreamFrm.Puts7.Text = "test from Form1 : timerticks" Threading.ThreadPool.QueueU

我有两个表格:Form1和StreamFrm。 从Form1上的螺纹接头,我需要更新StreamFrm上的文本框。 我尝试了以下方法:

Private Sub timerTicks() Handles EventTimer.Tick
    If IsCheckingTable = False Then
        StreamFrm.Puts7.Text = "test from Form1 : timerticks"
        Threading.ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf CheckTableForNewRecords), IsCheckingTable)
    End If
    Timertxt.Text = Date.Now
End Sub
Private Sub CheckTableForNewRecords(IsCheckingTable)
    IsCheckingTable = True
    swR.Restart()
    swR.Start()
    PR = LR
    SQL.GETlastrcrd(QueryLR, LR)
    NR = LR - PR
    strm()
    UpdateLastrcrdFrm(LR)
    UpdatePrvLrcdrFrm(PR)
    UpdateNewrcrdFrm(NR)
    If NR > 0 Then
        Dim QueryRR As String = "SELECT * from(select ROW_NUMBER() over (Order by StreamingID ) as row, " & _
                                "StreamingID,WatchlistID,symbol,Bid,Ask,Last,High,Low,PrevClose,Volume,TradeTime," & _
                                "QuoteTime,TradeDate,QuoteDate,Volatility,OpenInterest,UnderlyingSymbol,CallPut,TradeVolume,TradeAmount,Trade,LastSize from optionstream) " & _
                                "as StreamingID where StreamingID between " & (PR + 1) & " AND " & LR
        SQL.GetTrades(QueryRR)
    End If
    UpdateTEchecktrades()
    IsCheckingTable = False
End Sub
Private Sub strm()
    If StreamFrm.Puts6.InvokeRequired Then
        StreamFrm.Puts6.Invoke(New action(AddressOf strm))
    Else
        StreamFrm.Puts6.Text = "test from Form1 : ChecktableFornewrecords"
    End If
End Sub
Private Sub UpdateLastrcrdFrm(LR)
    If LastrcrdFRM.InvokeRequired Then
        LastrcrdFRM.Invoke(New Action(Of Integer)(AddressOf UpdateLastrcrdFrm), LR)
    Else
        LastrcrdFRM.Text = LR
    End If
End Sub
它更新了StreamFrm.Puts7.Text=来自表单1的测试:timerticks刚刚好;这是同一条线

从线程化的sub-CheckTable for NewRecordsCheckingTable中,我调用sub-strm,它检查StreamFrm.Puts6在向其写入文本之前是否需要调用。 这不起作用,没有错误,但文本框中没有文本

但是LastrcrdFRM.Text=LR确实有效。但是这个文本框在Form1上

那么如何更新表单StreamFrm上的文本框呢?
我正在使用与Form1相同的invoke方法,那么为什么它不工作呢?

据我回忆,在控件上调用InvokeRequest时,InvokeRequest无法按预期工作。你需要在表格上打电话

Private Sub strm()
    If StreamFrm.InvokeRequired Then
        StreamFrm.Invoke(New action(AddressOf strm))
    Else
        StreamFrm.Puts6.Text = "test from Form1 : ChecktableFornewrecords"
    End If
End Sub

谢谢尝试过,但结果相同;StreamFrm.Puts.Text保留为空。没有错误。