[VB.NET] [Thread] Freeze de l'interface lors d'une serialisation longue
Bonjour,
Voici ma procédure pour désérialiser un fichier pour retrouver l'arborescence d'une treeview :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Private Sub ChargeTreeView(ByVal TreeView As TreeView, ByVal FileName As String)
Dim fichier As New FileStream(FileName, FileMode.Open)
Dim serialiser As New BinaryFormatter
ListeNoeuds = serialiser.Deserialize(fichier)
With TreeView
For Each node As TreeNode In ListeNoeuds
.BeginInvoke(New TN_Delegate(AddressOf .Nodes.Add), New Object() {node})
Next
End With
fichier.Close()
End Sub |
Donc en fait, j'ai passé cette procedure en thread. Mais le poroblème c'est que comme le fichier est gros (et oui car j'ai comme mm pres de 50 000 noeuds à désérialiser), l'interface utilisateur se bloque pendant un cours instant qui est de 7 secondes (temps pour effectuer la désérialisation)
J'ai essayer en passant l'ajout des noeuds en beginupdate mais rien a faire ca bloque toujours !!!
PS: Comme je n'ai qu'un seul noeud racine, le
Code:
1 2 3
| For Each node As TreeNode In ListeNoeuds
.BeginInvoke(New TN_Delegate(AddressOf .Nodes.Add), New Object() {node})
Next |
n'est appelé qu'une seule fois
Aidez moi car vraiment c'est très embétant de bloquer toute l'application sans meme pouvoir dire à l'utilisateur que ca charge...
Thanks ALL