Silverlight之dispatcherTimer 与 线程
一、创建多线程
<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运行: