簡體   English   中英

與VB.NET中的GUI控件異步工作

[英]Working Asynchronously with GUI Controls in VB.NET

我有一個需要處理的項目列表框,我想在一個單獨的線程上異步處理它們。 (之前從未這樣做過)。

所以我創建了一個Delegate,一個Callback,稱為對列表框項目進行工作的方法。

我收到異常“System.InvalidOperationException”:跨線程操作無效:控制'ListBoxBlah'從其創建的線程以外的線程訪問。

對單個項目執行異步操作對我來說沒有意義,因為我只是在后台執行大量操作(列表框可能有20000個項目),同時允許用戶執行其他操作。

要與GUI交互,這必須變得更加復雜......我只是不知道如何:

Public Sub F(ByVal ext As String)
    If ListBoxBlah.SelectedIndex = -1 Then Return
    'Process ListBoxBlah
End Sub

Delegate Sub E(ByVal ext As String)

Sub Callback(ByVal ar As IAsyncResult)
    Dim t As E = CType(CType(ar, System.Runtime.Remoting.Messaging.AsyncResult).AsyncDelegate, E)
    t.EndInvoke(ar)
End Sub

Public Sub Ex()
    Dim t As E = AddressOf F
    t.BeginInvoke("ext", AddressOf Callback, "state")
End Sub

在c#中,如果要從未創建GUI的線程訪問GUI,請使用“Invoke required”
我假設在VB.NET中它是一樣的。
試試這個: http//www.vbdotnetforums.com/database-general-discussion/19740-how-use-invokerequired.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM