<Window x:Class="DispatcherExamples.AvoidWait" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="DispatcherExamples" Height="300" Width="300" > <Grid> </Grid> </Window> //File:Window.xaml.cs using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Windows.Threading; namespace DispatcherExamples { public partial class AvoidWait : System.Windows.Window { public AvoidWait() { InitializeComponent(); } delegate void MyDelegateType(); private void BackAndForth() { MyDelegateType work = delegate{ DoWorkOnUIThread(); DoTheMainWorkDone(); }; this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, work); } private void DoTheMainWorkDone() { Console.WriteLine("DoTheMainWorkDone"); } private void DoWorkOnUIThread() { Console.WriteLine("DoWorkOnUIThread"); } } }