Mega Code Archive

 
Categories / C# / WPF
 

Check Whether 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="120" Width="364">     <StackPanel>         <Button Click="ButtonTrue_Click">UI Thread</Button>         <Button Click="ButtonFalse_Click">Non-UI Thread</Button>         <TextBlock x:Name="txtResult"/>     </StackPanel> </Window> //File:Window.xaml.cs using System.Windows; using System.Windows.Threading; namespace WpfApplication1 {     public partial class Window1 : Window     {         private delegate void CheckAccessDelegate();         private delegate void SetResultTextDelegate(string result);         public Window1()         {             InitializeComponent();         }         private void ButtonTrue_Click(object sender, RoutedEventArgs e)         {             CheckAccess();         }         private void ButtonFalse_Click(object sender, RoutedEventArgs e)         {             CheckAccessDelegate del = new CheckAccessDelegate(CheckAccess);             del.BeginInvoke(null, null);         }         private void CheckAccess()         {             if(txtResult.Dispatcher.CheckAccess())             {                 txtResult.Text = "True";             }else{                 txtResult.Dispatcher.BeginInvoke(DispatcherPriority.Normal,new SetResultTextDelegate(SetResultText),"False");             }         }         private void SetResultText(string result)         {             txtResult.Text = result;         }     } }