一、创建多线程
<StackPanel x:Name="LayoutRoot" Background="White">
<Border x:Name="border" Background="AliceBlue" Margin="5" BorderBrush="Black" Width="300" BorderThickness="3" CornerRadius="5" />
<StackPanel Orientation="Horizontal" Width="310">
<Button x:Name="btn_star" Width="100" Height="30" Click="btn_star_Click" Margin="10" Content="开始倒计时" />
<Button x:Name="btn_json" Width="100" Click="btn_json_Click" Margin="10" Content="延迟线程" />
</StackPanel>
</StackPanel>
C#:
private static TextBlock txb;
private Thread newThread;
public DispatcherTimerAndThread()
{
InitializeComponent();
//将文本txb添加到界面上
txb = new TextBlock()
{
Width = 300,
Height = 100,
FontSize = 24
};
border.Child = txb;
//创建一个线程并执行线程方法
newThread = new Thread(DispatcherTimerAndThread.SetText);
}
public static void SetText()
{
int i = 60;
while (i > 0)
{
txb.Dispatcher.BeginInvoke(delegate() { txb.Text = "距离线程结束还有:" + i + "秒"; });
i--;
Thread.Sleep(1000);
}
}
private void btn_star_Click(object sender, RoutedEventArgs e)
{
newThread.Start();
}
private void btn_json_Click(object sender, RoutedEventArgs e)
{
newThread.Join(2000);
}
按F5运行:
二、利用DispatcherTimer做一个计时器
<Grid x:Name="LayoutRoot" Background="White">
<Rectangle Fill="Gold" StrokeThickness="3" Width="300" Height="150"
Margin="0,20,0,0" Stroke="Black" RadiusX="5" RadiusY="5">
</Rectangle>
<TextBlock x:Name="txb_times" Width="300" Height="50" FontSize="30" Foreground="Red"/>
</Grid>
C#:
public timer()
{
InitializeComponent();
//创建DispatcherTimer对象
DispatcherTimer timers = new DispatcherTimer();
//设置间隔时间
timers.Interval = new TimeSpan(0, 0, 1);
//创建处理事件
timers.Tick += new EventHandler(timers_Tick);
//开始
timers.Start();
}
void timers_Tick(object sender, EventArgs e)
{
//当前时间
txb_times.Text = "当前时间:" + DateTime.Now.ToLongTimeString();
}
按F5运行: