In short we have a lengthy process when a form is loaded that adds
activex controls to our windows form. This process in itself works
fine however we would like to push this processing to a thread but are
stumped so far.
Our goal is simply to allow the form to fully display while the
controls are being added. Preferrably with a progressbar to let them
know that the form is still being built.
Here are some snippets.
Private Sub Form_Shown(ByVa l sender As Object, ByVal e As
System.EventArg s) Handles Me.Shown
Dim myThread As Threading.Threa d
myThread = New Threading.Threa d(AddressOf load_udfSection s)
myThread.SetApa rtmentState(Thr eading.Apartmen tState.STA)
myThread.Start( )
End Sub
Private Sub load_udfSection s()
...
udfSection = New AxTdF_DynamicUD F.AxDynUDF
udfSection.Begi nInit()
udfSection.Anch or =
CType(((System. Windows.Forms.A nchorStyles.Top Or
System.Windows. Forms.AnchorSty les.Left) _
Or System.Windows. Forms.AnchorSty les.Right),
System.Windows. Forms.AnchorSty les)
udfSection.Enab led = True
udfSection.Visi ble = False
udfSection.Loca tion = New
System.Drawing. Point(ToolStrip Container1.Cont entPanel.Margin .Left,
currentTop)
udfSection.Name = "AxDynUDF" & CStr(controlInd ex + 1)
With ToolStripContai ner1.ContentPan el
axWidth = .Width - (.Margin.Left + .Margin.Right)
End With
udfSection.Size = New System.Drawing. Size(axWidth, 1)
ToolStripContai ner1.ContentPan el.Invoke(New
addControl(Addr essOf addControlToToo lstrip), udfSection)
udfSection.EndI nit()
udfSection.load _Controls(CShor t(reader("Contr olGroupID")), True)
.....
End Sub
There is a delegate called addcontroltoToo lstrip for the following
function.
Private Sub addControlToToo lstrip(ByVal activexControl As
AxTdF_DynamicUD F.AxDynUDF)
ToolStripContai ner1.ContentPan el.Controls.Add (activexControl )
End Function
The invoke on the toolstrip seems to work fine but then when we try to
call endinit() it errors telling us that the control has been modified
in a different thread.
Any ideas? Only been using .NET for a week so there is no chance of
offending me. In VB6 we would have just started a timer in the show
event of the form which would let the event exit and then the timer
would process our lengthy code. Ugly but it at least allowed the form
to fully display before adding the remaining controls. Looking for
something a little bit more interactive.
Glenn Welker
activex controls to our windows form. This process in itself works
fine however we would like to push this processing to a thread but are
stumped so far.
Our goal is simply to allow the form to fully display while the
controls are being added. Preferrably with a progressbar to let them
know that the form is still being built.
Here are some snippets.
Private Sub Form_Shown(ByVa l sender As Object, ByVal e As
System.EventArg s) Handles Me.Shown
Dim myThread As Threading.Threa d
myThread = New Threading.Threa d(AddressOf load_udfSection s)
myThread.SetApa rtmentState(Thr eading.Apartmen tState.STA)
myThread.Start( )
End Sub
Private Sub load_udfSection s()
...
udfSection = New AxTdF_DynamicUD F.AxDynUDF
udfSection.Begi nInit()
udfSection.Anch or =
CType(((System. Windows.Forms.A nchorStyles.Top Or
System.Windows. Forms.AnchorSty les.Left) _
Or System.Windows. Forms.AnchorSty les.Right),
System.Windows. Forms.AnchorSty les)
udfSection.Enab led = True
udfSection.Visi ble = False
udfSection.Loca tion = New
System.Drawing. Point(ToolStrip Container1.Cont entPanel.Margin .Left,
currentTop)
udfSection.Name = "AxDynUDF" & CStr(controlInd ex + 1)
With ToolStripContai ner1.ContentPan el
axWidth = .Width - (.Margin.Left + .Margin.Right)
End With
udfSection.Size = New System.Drawing. Size(axWidth, 1)
ToolStripContai ner1.ContentPan el.Invoke(New
addControl(Addr essOf addControlToToo lstrip), udfSection)
udfSection.EndI nit()
udfSection.load _Controls(CShor t(reader("Contr olGroupID")), True)
.....
End Sub
There is a delegate called addcontroltoToo lstrip for the following
function.
Private Sub addControlToToo lstrip(ByVal activexControl As
AxTdF_DynamicUD F.AxDynUDF)
ToolStripContai ner1.ContentPan el.Controls.Add (activexControl )
End Function
The invoke on the toolstrip seems to work fine but then when we try to
call endinit() it errors telling us that the control has been modified
in a different thread.
Any ideas? Only been using .NET for a week so there is no chance of
offending me. In VB6 we would have just started a timer in the show
event of the form which would let the event exit and then the timer
would process our lengthy code. Ugly but it at least allowed the form
to fully display before adding the remaining controls. Looking for
something a little bit more interactive.
Glenn Welker
Comment