Connecting Tech Pros Worldwide Help | Site Map

Showing a form from within a thread

Jerry Spence1
Guest
 
Posts: n/a
#1: Aug 6 '06
I have the following which generates MDI forms, but doesn't show them at
this stage:

For n As Integer = 1 To 10

fmViewer(n) = New frmViewer

fmViewer(n).Tag = n

fmViewer(n).MdiParent = Frm1

Next

From within a new thread I wish to show a form:

fmViewer(4).show

However, it doesn't show. The answer I am sure is because I am trying to
show it from within a thread. How can I achieve this?

-Jerry




iwdu15
Guest
 
Posts: n/a
#2: Aug 6 '06

re: Showing a form from within a thread


is fmViewer an array? or are you trying to do something else....please
explain a little bit more
--
-iwdu15
Chris Dunaway
Guest
 
Posts: n/a
#3: Aug 7 '06

re: Showing a form from within a thread


Jerry Spence1 wrote:
Quote:
I have the following which generates MDI forms, but doesn't show them at
this stage:
>
For n As Integer = 1 To 10
>
fmViewer(n) = New frmViewer
>
fmViewer(n).Tag = n
>
fmViewer(n).MdiParent = Frm1
>
Next
>
From within a new thread I wish to show a form:
>
fmViewer(4).show
>
However, it doesn't show. The answer I am sure is because I am trying to
show it from within a thread. How can I achieve this?
What is frmViewer? Here you are using it as both the name of your
class and the name of the array variable. Can you show us the
declaration for frmViewer?

Chris

Brian Gideon
Guest
 
Posts: n/a
#4: Aug 7 '06

re: Showing a form from within a thread


Jerry,

All Form access must be done from the main UI thread. That includes
creating, manipulating, and showing the Form. You'll need a reference
to an existing Form or Control that your worker thread will use to
marshal the execution of a delegate onto the UI thread by calling
Invoke or BeginInvoke. That delegate should contain the code to create
and show the new Form. Invoke and BeginInvoke are among the very few
members of a Form or Control that are actually thread-safe.

Brian

Jerry Spence1 wrote:
Quote:
I have the following which generates MDI forms, but doesn't show them at
this stage:
>
For n As Integer = 1 To 10
>
fmViewer(n) = New frmViewer
>
fmViewer(n).Tag = n
>
fmViewer(n).MdiParent = Frm1
>
Next
>
From within a new thread I wish to show a form:
>
fmViewer(4).show
>
However, it doesn't show. The answer I am sure is because I am trying to
show it from within a thread. How can I achieve this?
>
-Jerry
Jerry Spence1
Guest
 
Posts: n/a
#5: Aug 7 '06

re: Showing a form from within a thread


Hi Chris

fmViwer is the name of my form, fmViewer() is an array. I can see the
difference is rather small!

-Jerry


"Chris Dunaway" <dunawayc@gmail.comwrote in message
news:1154957680.048491.134180@m79g2000cwm.googlegr oups.com...
Quote:
Jerry Spence1 wrote:
Quote:
>I have the following which generates MDI forms, but doesn't show them at
>this stage:
>>
>For n As Integer = 1 To 10
>>
>fmViewer(n) = New frmViewer
>>
>fmViewer(n).Tag = n
>>
>fmViewer(n).MdiParent = Frm1
>>
>Next
>>
>From within a new thread I wish to show a form:
>>
>fmViewer(4).show
>>
>However, it doesn't show. The answer I am sure is because I am trying to
>show it from within a thread. How can I achieve this?
>
What is frmViewer? Here you are using it as both the name of your
class and the name of the array variable. Can you show us the
declaration for frmViewer?
>
Chris
>

Jerry Spence1
Guest
 
Posts: n/a
#6: Aug 7 '06

re: Showing a form from within a thread



"Brian Gideon" <briangideon@yahoo.comwrote in message
news:1154964586.043590.211090@i42g2000cwa.googlegr oups.com...
Quote:
Jerry,
>
All Form access must be done from the main UI thread. That includes
creating, manipulating, and showing the Form. You'll need a reference
to an existing Form or Control that your worker thread will use to
marshal the execution of a delegate onto the UI thread by calling
Invoke or BeginInvoke. That delegate should contain the code to create
and show the new Form. Invoke and BeginInvoke are among the very few
members of a Form or Control that are actually thread-safe.
>
Brian
>
Jerry Spence1 wrote:
Quote:
>I have the following which generates MDI forms, but doesn't show them at
>this stage:
>>
>For n As Integer = 1 To 10
>>
>fmViewer(n) = New frmViewer
>>
>fmViewer(n).Tag = n
>>
>fmViewer(n).MdiParent = Frm1
>>
>Next
>>
>From within a new thread I wish to show a form:
>>
>fmViewer(4).show
>>
>However, it doesn't show. The answer I am sure is because I am trying to
>show it from within a thread. How can I achieve this?
>>
>-Jerry
>
Thanks Brian. I'll have a look at Invoke and BeginInvoke.

-Jerry


Closed Thread