By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
454,779 Members | 1,500 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 454,779 IT Pros & Developers. It's quick & easy.

Access Control In a Form From Library Function on Worker Thread

P: n/a
I have a windows forms app with a statusbar. In the form's code, I use
a delegates and spawn a worker thread to get processing off of the GUI
thread. Then in the worker thread I access a function in a library
file. The function needs to be able to update some of the forms status
bar panels. I have had great success in doing the following...

Invoke(new UpdateStatusDelegate(this.UpdateStatus), new object[] { "My
Message" });
BUT, it doesn't work from the function in the library file. I have
gotten it down to two error messages on compile:
1. The name 'Invoke' does not exist in the current context
2. An object reference is required for the nonstatic field, method, or
property 'MyNamespace._MyFormInstance.UpdateStatus(string)'
First, I do not understand why the first error message is occurring. I
have all "using" statements in the library file set to the same as in
the form's code file. I am missing something, somewhere.
Second, I can see why the second message is occurring. The calling form

instance is non-static. But this doesn't cause any problem when using
the code snippet in the form's code file.
Any suggestions?

Apr 5 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
I suspect that you've made the handler, from which you invoke the call, a
static method.. Therefore in that context there is no "this."

The thread's event handler should have an instance of the form, check to see
if invoke is required (it normally is but you never know) and invoke the
method directly from the handler.
--
Bob Powell [MVP]
Visual C#, System.Drawing

Ramuseco Limited .NET consulting
http://www.ramuseco.com

Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm

All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.

<jo*********@topscene.com> wrote in message
news:11**********************@z34g2000cwc.googlegr oups.com...
I have a windows forms app with a statusbar. In the form's code, I use
a delegates and spawn a worker thread to get processing off of the GUI
thread. Then in the worker thread I access a function in a library
file. The function needs to be able to update some of the forms status
bar panels. I have had great success in doing the following...

Invoke(new UpdateStatusDelegate(this.UpdateStatus), new object[] { "My
Message" });
BUT, it doesn't work from the function in the library file. I have
gotten it down to two error messages on compile:
1. The name 'Invoke' does not exist in the current context
2. An object reference is required for the nonstatic field, method, or
property 'MyNamespace._MyFormInstance.UpdateStatus(string)'
First, I do not understand why the first error message is occurring. I
have all "using" statements in the library file set to the same as in
the form's code file. I am missing something, somewhere.
Second, I can see why the second message is occurring. The calling form

instance is non-static. But this doesn't cause any problem when using
the code snippet in the form's code file.
Any suggestions?

Apr 5 '06 #2

P: n/a
Bob, I'm sorry but I don't quite understand. The worker thread was
spawned in the form's code file, and then there it calls a function in
a different library (.cs file). As far as I can tell, there is no
"handle" to grab from within the library file. I have used...

MyNameSpace.MyFormName.ActiveForm.Invoke to get rid of the Invoke error
message, but I still can't compile because of the second error message,
and so I don't know if that worked.

Apr 5 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.