<Window x:Class="WPFThreading.BlockThread" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="UI Thread Blocker" Height="275" Width="225" > <Window.Resources> <Style TargetType="{x:Type Button}"> <Setter Property="Height" Value="20" /> <Setter Property="Background" Value="Beige"/> <Setter Property="Margin" Value="2" /> </Style> <Style TargetType="{x:Type Label}"> <Setter Property="FontWeight" Value="Bold" /> <Setter Property="Margin" Value="2" /> </Style> <Style TargetType="{x:Type TextBox}"> <Setter Property="Margin" Value="2" /> </Style> </Window.Resources> <Border Width="200" Height="225" BorderBrush="Black" BorderThickness="1" Margin="4"> <StackPanel> <Label>Simulate Long-Running Process</Label> <Button Name="button1" Click="button1_click">Go to sleep</Button> <Label>Will I respond?</Label> <Button Name="button2" Click="button2_click">Try Me</Button> <Label>Output Messages</Label> <TextBox Name="textbox1"/> <Label/> <StackPanel Orientation="Horizontal"> <Label>UI thread:</Label> <Label Name="UIThreadLabel"></Label> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>BG thread:</Label> <Label Name="BackgroundThreadLabel"></Label> </StackPanel> </StackPanel> </Border> </Window> //File:Window.xaml.vb Imports System.Windows Namespace WPFThreading Public Partial Class BlockThread Inherits System.Windows.Window Public Sub New() InitializeComponent() Me.UIThreadLabel.Content = Me.Dispatcher.Thread.ManagedThreadId Me.BackgroundThreadLabel.Content = "N/A" End Sub Private Sub button1_click(sender As Object, e As RoutedEventArgs) System.Threading.Thread.Sleep(5000) Me.textbox1.Text = "Done Sleeping..." End Sub Private Sub button2_click(sender As Object, e As RoutedEventArgs) Me.textbox1.Text = "Hello WPF" End Sub End Class End Namespace