zoukankan      html  css  js  c++  java
  • 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运行:

  • 相关阅读:
    Qt生成随机数
    Qt调用系统DLL,判断网络连接状态
    Qt操作sqlite数据库
    Qt 操作注册表
    vs报错:RC1004 unexpected end of file found
    Qt操作ini文件
    Django Admin:自动选择当前用户
    BSTR转QString
    vue-cli4,vue3打包后页面无内容
    Qt 5.12.10 国际化
  • 原文地址:https://www.cnblogs.com/raphael5200/p/5114910.html
Copyright © 2011-2022 走看看