WPF thread -- Dispatcher, wpfdispatcher
When developing using WPF, you often encounter cross-thread problems caused by the need to update the UI content of the created thread.
Exception content:
Exception type: System. InvalidOperationException
Exception description:
"System. InvalidOperationException" type unprocessed exception occurs in WindowsBase. dll
Other information: The Calling thread cannot access this object because another thread owns this object.
This. Dispatcher. Invoke (new Action () =>{// Do Something // update UI operation}); Thread. Sleep (100 );
2. Use the Dispatcher of the Control. [in WPF, the control inherits from DispatcherObject]
If (! This. pb_test.Dispatcher.CheckAccess () {// update the UI interface this. pb_test.Dispatcher.Invoke (DispatcherPriority. normal, new UpdateProgressBarDelegate (int progress) => {this. pb_test.Value = progress;}), I); Thread. sleep (100 );}
3. Use Dispatcher of the current form
if (!Dispatcher.CheckAccess()){Dispatcher.Invoke(DispatcherPriority.Normal,new UpdateProgressBarDelegate((int progress) => {this.pb_test.Value = progress;}),i);Thread.Sleep(100);}
Project hosting address: https://wpfthread.codeplex.com/