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运行:

posted @ 2011-10-21 18:17  Bodi  阅读(173)  评论(0编辑  收藏  举报