Køre Sub i thread
Hej. Jeg bruger nedenstående kode til at tilføje grupper og treeviews til min menu. Den henter en del data så den er lang tid om at starte op....(layoutet er meget forsinket). Hvordan løser jeg dette bedst så grafikken kommer frem med det samme.Kan jeg evnt kører den i en thread i baggrunden? Hvis ja så hvordan?
Private Sub InitializeMenu()
Dim YearSQL As OracleDataReader
Dim DateSQL As OracleDataReader
Dim MonthSQL As OracleDataReader
Dim DatasetSQL As OracleDataReader
Dim Hitrate As Group
Dim HitrateOverblik As Group
Dim ListeNumre As Group
Dim Funktioner As Group
Hitrate = Navigator.Groups.Add("Hitrate")
Hitrate.Image = Image.FromFile("img/stats.ico")
HitrateOverblik = Navigator.Groups.Add("Hitrate overblik")
HitrateOverblik.Image = Image.FromFile("img/stats.ico")
Dim HitrateDetailPanel As GroupPanel = New GroupPanel
HitrateDetailPanel.BackColor = Color.White
HitrateDetailPanel.Height = "200"
HitrateDetailPanel.Visible = True
HitrateDetailPanel.Controls.Add(lstDetails)
lstDetails.Dock = DockStyle.Fill
Hitrate.Panel = HitrateDetailPanel
ListeNumre = Navigator.Groups.Add("Dine numre på listen")
ListeNumre.Image = Image.FromFile("img/stats.ico")
Funktioner = Navigator.Groups.Add("Funktioner")
Funktioner.Image = Image.FromFile("img/stats.ico")
Dim Agents As Node
Dim AgentsNode As Node
Dim DatasetNode As Node
Dim YearNode As Node
Dim MonthNode As Node
Dim DateNode As Node
Try
Dim DatasetCount As Integer = 0
Dim YearCount As Integer = 0
Dim MonthCount As Integer = 0
Dim i As Integer = 0
Dim Dato As Date
Dim DatasetImage As String
DatasetSQL = DBCommands.ExecuteSQL("select dataset from hitrate group by dataset", DBCommands.DBConnection.OracleDrift).executereader
While DatasetSQL.Read = True
YearSQL = DBCommands.ExecuteSQL("select extract(year from dato) as HitYear from hitrate where dataset = '" & DatasetSQL.Item("dataset") & "' group by extract(year from dato) order by extract(year from dato) DESC", DBCommands.DBConnection.OracleDrift).executereader
DatasetNode = Hitrate.Nodes.Add(DatasetSQL.Item("dataset"))
If DatasetSQL.Item("dataset") = "DAT" Then
DatasetImage = "img/flag_dk.gif"
ElseIf DatasetSQL.Item("dataset") = "SE" Then
DatasetImage = "img/flag_se.gif"
ElseIf DatasetSQL.Item("dataset") = "NO" Then
DatasetImage = "img/flag_no.gif"
End If
Hitrate.Nodes(DatasetCount).Image = Image.FromFile(DatasetImage)
While YearSQL.Read = True
YearNode = DatasetNode.Nodes.Add(YearSQL.Item("hityear"))
YearNode.Image = Image.FromFile("img/database_options.ico")
MonthSQL = DBCommands.ExecuteSQL("select extract(month from dato) as HitMonth from hitrate where dataset = '" & DatasetSQL.Item("dataset") & "' and extract(year from dato) = " & YearSQL.Item("hityear") & " group by extract(month from dato) order by extract(month from dato) DESC", DBCommands.DBConnection.OracleDrift).executereader
While MonthSQL.Read = True
MonthNode = DatasetNode.Nodes(YearCount).Nodes.Add(MonthName(MonthSQL.Item("HitMonth"), False))
MonthNode.Image = Image.FromFile("img/table.ico")
For i = 1 To Date.Today.DaysInMonth(YearSQL.Item("hityear"), MonthSQL.Item("hitmonth"))
Dato = i & "-" & MonthSQL.Item("hitmonth") & "-" & YearSQL.Item("hityear")
If Dato <= Date.Today Then
DateNode = DatasetNode.Nodes(YearCount).Nodes(MonthCount).Nodes.Add(Dato)
Else
Exit For
End If
Next
MonthCount = MonthCount + 1
End While
MonthCount = 0
YearCount = YearCount + 1
End While
YearCount = 0
DatasetCount = DatasetCount + 1
End While
Catch exp As Exception
MsgBox(exp.Message)
Catch exp As OracleException
MsgBox(exp.Message)
End Try
Hitrate.Select()
Hitrate.Nodes(0).IsExpanded = True
Hitrate.Nodes(0).Nodes(0).IsExpanded = True
Hitrate.Nodes(0).Nodes(0).Nodes(0).IsExpanded = True
Dim NodeAntal As Integer = Hitrate.Nodes(0).Nodes(0).Nodes(0).Nodes.Count
Hitrate.Nodes(0).Nodes(0).Nodes(0).Nodes(NodeAntal - 1).IsSelected = True
YearSQL.Close()
YearSQL.Dispose()
MonthSQL.Close()
MonthSQL.Dispose()
DatasetSQL.Close()
DatasetSQL.Dispose()
End Sub