<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
|