Private Sub BtnTcpTestYaxin_Click(sender As Object, e As RoutedEventArgs) Handles btnTcpTestYaxin.Click
Me.btnTcpTestYaxin.Dispatcher.BeginInvoke(New Action(Sub()
'Thread.Sleep(TimeSpan.FromSeconds(3))
Debug.Print("ddddddddddddddddddddddddddddd")
Dim uri200 As System.Uri = New Uri(MySettings.Default.UrlYaxin200)
Dim uri250 As System.Uri = New Uri(MySettings.Default.UrlYaxin250)
Debug.Print(uri250.Host & "...." & uri250.Port)
Dim ok250 As String = IIf(TcpBase.TcpConnect(uri250.Host, uri250.Port), "250ok", "250no")
Dim ok200 As String = IIf(TcpBase.TcpConnect(uri200.Host, uri200.Port), "200ok", "200no")
btnTcpTestYaxin.Content = ok250 & vbCrLf & ok200
End Sub))
End Sub
uj5u.com熱心網友回復:
委托還是占主執行緒的。uj5u.com熱心網友回復:
麻煩給提個建議uj5u.com熱心網友回復:
WINFORM在異步運行后,me.invoke呼叫另一個程式修改UI屬性。初次撰寫WPF異步,不太明白uj5u.com熱心網友回復:
debug發現thread.currentthread和dispatcher確實是一個行程。納悶了,begininvoke和invoke是不一樣的啊
uj5u.com熱心網友回復:
begininvoke和invoke都是發送委托給主執行緒,只不過一個發過去之后 等主執行緒有空了再干 一個是發過去直接就干吧uj5u.com熱心網友回復:
哦。WPF修改UI,最流行的方法是什么?是控制元件資料系結嗎?uj5u.com熱心網友回復:
別用委托,開新執行緒啊。
uj5u.com熱心網友回復:
begininvoke和invoke都是發送委托給主執行緒,只不過一個發過去之后 等主執行緒有空了再干 一個是發過去直接就干吧
問題是兩個都使視窗卡住了
uj5u.com熱心網友回復:
測驗過新執行緒,但是新執行緒無法回呼。像WINFORM那樣。正在郁悶中uj5u.com熱心網友回復:
從你的代碼猜測,你使用了一個根本不支持異步執行緒的組件,那么即使你在子執行緒去呼叫它,而它卡死——等待主執行緒執行完畢——才繼續運行,這就是多余的。因此在異步多執行緒編程中,不能呼叫阻塞陳述句。一旦里邊去呼叫阻塞陳述句就等于“脫褲子放屁”一樣地把自己給玩兒壞了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/46334.html
標籤:VB.NET
