1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
Public Class XProject
Private Sub XProject_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
' Les appels des procédures relatives à l'initialisation de la fenêtre principale :
Me.IsMdiContainer = True
Call .......etc ' initialisation du Logger, icones, barres d'outils, TreeView...etc
' Chargement du Setup.ini et Initialisation :
Call ........etc ' Chargement du SetUp, Initialisation du Dataset, Objets ADO.NET, Connection, Vérification de la base.....etc
' Initialisation et lancement du BackGroundWorker :
BackgroundWorker1.WorkerReportsProgress = True
AddHandler BackgroundWorker1.DoWork, AddressOf LoadData
AddHandler BackgroundWorker1.ProgressChanged, AddressOf AfficheProgress
AddHandler BackgroundWorker1.RunWorkerCompleted, AddressOf LoadDataCompleted
BackgroundWorker1.RunWorkerAsync()
Call UsersAuthentification() ' Affiche frmAuthentification.ShowDialog puis charge le profil Utilisateur
End Sub
' Le Chargement des données avec les notifications d'avancements :
Private Sub LoadData()
BackgroundWorker1.ReportProgress(30, "Chargement de la table Users...")
Call LoadTablesUsers()
BackgroundWorker1.ReportProgress(50, "Chargement de la table projets...")
Call LoadTablesProjets()
BackgroundWorker1.ReportProgress(70, "Chargement de la table Taches...")
Call LoadTablesTaches()
BackgroundWorker1.ReportProgress(100, "Chargement terminé.")
End Sub
' La suite des procédures que je n'ai pas pu mettre dans LoadData car les objets qui appartiennent à la fenêtre principale et donc au Thread Principal, ne peuvent pas être manipulés dans le Thread secondaire du BackGroundWorker (Celui-ci ne l'accepte pas !, probablement parceque celui ci est lancé depuis la fenêtre principale ?).
Private Sub LoadDataCompleted()
' Initialisation des contrôles de la fenêtre principale une fois que les données ont été chargés :
ComboBoxPROJETCOURANT.DataSource = objDBDataSet.Tables(Tables.Projets)
.....etc
frmProjets.MdiParent = Me
frmTaches.MdiParent = Me
ToolStripProgressBar1.Visible = False
ToolStripStatusLabel2.Visible = False
ShowMdiChild(STARTUP_MDIFORM)
End Sub
' Dans le StatusProgress on affiche l'avancement du BackGroundWorker :
Private Sub AfficheProgress(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs)
Dim message As String = e.UserState.ToString
ToolStripProgressBar1.Value = e.ProgressPercentage
ToolStripStatusLabel2.Text = message
End Sub
End Class |
Partager