Blog Archives
the calling thread cannot access wpf win form c# multi threading
If you receive this error:
The calling thread cannot access this object because a different thread owns it
It is a simple fix to add in some common multi-threading invocation mechanisms.
WPF:
//with delegate declared public delegate mydelegate; this.Dispatcher.Invoke(new mydelegate(funcname)); this.Dispatcher.Invoke((mydelegate)delegate() { funcname(); }); //does not require delegate declared, i usually prefer this approach but there are situations for either this.Dispatcher.Invoke((Action)delegate() { funcname(); }); this.Dispatcher.Invoke((Action)(()=>{ funcname();}));
WinForms:
this.Invoke(funcname, params); this.BeginInvoke(funcname, params);
WPF Quick Reference
get window handle
IntPtr windowHandle = new WindowInteropHelper(this).Handle;
bring to front
myWindow.Activate(); myWindow.TopMost = true;
common resource dictionaries for skinning (this blog)
References
wpf get window handle (stackoverflow) http://stackoverflow.com/questions/1556182/finding-the-handle-to-a-wpf-window
wpf bring to front (stackoverflow) http://stackoverflow.com/questions/257587/bring-a-window-to-the-front-in-wpf