QUESTION: In .NET 3.5 WinForms apps, how do I access/call methods in UI thread from a separate thread, without passing a delegate?
EXAMPLE: Say I have some code I want to run both (a) manually when the user clicks a button, and (b) periodically called by a process which is running in a separate non-mainUI thread but without passing a delegate. [Simplistically I’m thinking that the class that has this method is already been constructed, and the main UI thread has a handle to it, therefore if the process running in the separate thread could just get a handle to it from the main-UI thread it could call it. Hopefully this is not a flawed concept]
BACKGROUND: I’m actually after a way to do the above for the case where my separate process thread is actually a job I schedule using quartz.net. The way the scheduler works I can’t seem to actually pass in a delegate. There is a way to pass JobDetails, however it only seems to caters for things like string, int, etc. Hence what I’m after is a way to access the MainForm class for example, to call a method on it, from within the quartz.net job which runs in a separate thread.
Thanks
Assuming you have access to the MainForm, you can simply call any of it’s methods, but those methods will then bear the burden of checking if they need to be marshalled to the UI thread and handle the delegate passing there.
So on your main form you could have a method: