Ensure That You Are Running on the UI Thread
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF" Height="100" Width="300">
<StackPanel>
<Button Click="ButtonTrue_Click">UI Thread</Button>
<Button Click="ButtonFalse_Click">Non-UI Thread</Button>
</StackPanel>
</Window>
//File:Window.xaml.cs
using System.Windows;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void ButtonTrue_Click(object sender, RoutedEventArgs e)
{
this.Dispatcher.VerifyAccess();
}
private void ButtonFalse_Click(object sender, RoutedEventArgs e)
{
VerifyAccessDelegate del = new VerifyAccessDelegate(VerifyAccess);
del.BeginInvoke(null, null);
}
private delegate void VerifyAccessDelegate();
private void VerifyAccess()
{
this.Dispatcher.VerifyAccess();
}
}
}
Related examples in the same category