【发布时间】:2010-12-10 15:50:50
【问题描述】:
我需要更多帮助。我是线程方面的菜鸟,我正在
vb.net 上制作应用程序。
基本上,我的应用程序所做的是它在 Lotus Notes 中搜索我需要的信息,当它搜索信息时,我需要一个 Gif 来显示一些动画。出于限制原因,我不想使用 backgroundworker。所以我需要
使用线程。
这是我的代码
Private Sub btnRechercheUtilisateur_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRechercheUtilisateur.Click
Dim t As New Thread(New ThreadStart(AddressOf RunInThread))
t.Start()
End Sub
Public Delegate Sub MyDelegate(ByVal arg As Integer)
Private Sub RunInThread()
Dim delInstatnce As New MyDelegate(AddressOf RechercheUtilisateurView)
Me.BeginInvoke(delInstatnce)
imgLoading.Visible = True
'Add your code that needs to be executed in separate thread
'except UI updation
End Sub
Public Sub RechercheUtilisateurView()
'Vérifie si la session est valide
If notes.IsSessionValide = False Then
LoginPanel.Visible = True
Exit Sub
End If
'Vide la liste
lstSearchUsager.Items.Clear()
lstGroupesUsager.Items.Clear()
'Uncheck checbox
chkGroupesUsager.Checked = False
'UI Setting pour le loading
' StartLoadingImg(172, 152)
txtSearchUsager.Enabled = False
btnRechercheUtilisateur.Enabled = False
'Ajoute les éléments de la liste
Dim users As List(Of UsagerNotes) = notes.GetUsagersByKeyword(txtSearchUsager.Text)
'Vérifier si un résultat a été retourné
If users.Count <> 0 Then
Dim rows(users.Count - 1) As ListViewItem
Dim counter As Integer = 0
'Loop d'ajout d'utilisateur au ListView
For Each u In users
Dim row As New ListViewItem
row.Text = u.nomCanonique
row.ImageKey = "1"
rows(counter) = row
counter += 1
Next
lstSearchUsager.Items.AddRange(rows)
Else
AddEvent("Aucun résultat trouvé pour la recherche utilisateur: " + txtSearchUsager.Text, "21")
End If
txtSearchUsager.Enabled = True
btnRechercheUtilisateur.Enabled = True
End Sub
当我使用调试器时,我的代码会冻结在 txtSearchUsager.Enabled = False 附近 谁能帮帮我,我很困惑
谢谢 千兆
【问题讨论】:
-
您指的是什么“限制原因”?这看起来像是对 BackgroundWorker 的近乎完美的使用。 (不与您的决定争论,只是试图理解它,以便我可以考虑到这个问题)
-
哦,只是我的客户的一些限制。问题是我的应用程序可能会在笔记中完成更多搜索,我们不想为每个搜索添加后台工作人员。我们将使用更多线程
-
多个后台工作人员有什么问题?我希望它仍然是管理多个搜索的最简单方法。如果您有 VB 2010,您可以将事件处理程序内联声明为 lambda。一个例程可以保存一次搜索的所有代码。
标签: .net vb.net multithreading