View Single Post
  #1 (permalink)  
Old September 7th, 2006, 01:49 AM
ivj ivj is offline
Registered User
 
Join Date: May 2006
Location: , , .
Posts: 4
Thanks: 0
Thanked 0 Times in 0 Posts
Default .net 2.0 - databinding to GUI in multi-threaded ap

Ok for those who don't know, in 2.0 if you try to access a GUI control from an outside thread you will get a cross thread exception. The proper way to change a control's value would be to call the control's "invoke" method with the function you specify, which will run in the control's thread.

Now I have a problem with this when trying to implement it in a real-world situation.

Here's an example.

I have a Settings class which has a "test" setting (string).

In the beginning, I databind that property to a text box.

Now, all of my logic is compliled in a separate .dll and proccessed 100% separate of the GUI and in a background thread. GUI only makes calls to the logic (which also exposes the Settings, which the GUI binds to).

Now the problem is that when I'm doing something inside the logic, and I change my Settings.test = "blahh", I get a cross-thread exception because the databinding mechanism tries to change the gui control (and there's absolutely no thread-safety built in).

So I have to somehow force the databinding to do the "invoke" so I don't have to do it every single time from within the logic.

Any suggestions or ideas?

THANK YOU IN ADVANCE!

Reply With Quote