Visual Studio | WPF > 타이머 이벤트 > 버튼 누름에서 경과 초 수 얻기 > DispatcherTimer + DateTime.Subtract()

운영 환경
Windows 8.1 Pro (64bit)
Microsoft Visual Studio 2017 Community
Sublime Text 2

처리 개요


  • Button을 눌렀을 때 1초 간격의 타이머를 기동한다.
  • DispatcherTimer 사용
  • MSDN


  • 타이머의 처리 마다 경과 초수를 DateTime.Subtract()로 취득한다
  • MSDN


  • code



    MainWindow.xaml
    <Window x:Class="_171110_t1515_dispatcherTimer.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:_171110_t1515_dispatcherTimer"
            mc:Ignorable="d"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <StackPanel>
                <TextBlock Name="T_time" Height="50" Text=""/>
                <Button Width="120" Height="30" Content="Start" Click="Button_Click"/>
            </StackPanel>
        </Grid>
    </Window>
    

    MainWindow.xaml.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    //以下を追加 (DispatcherTimerのため)
    using System.Windows.Threading;
    
    namespace _171110_t1515_dispatcherTimer
    {
        /// <summary>
        /// MainWindow.xaml の相互作用ロジック
        /// </summary>
        public partial class MainWindow : Window
        {
            DispatcherTimer myTimer;
            DateTime startTime;
    
            public MainWindow()
            {
                InitializeComponent();
    
                myTimer = new DispatcherTimer(DispatcherPriority.Normal);
                myTimer.Interval = new TimeSpan(0, 0, 1);
                myTimer.Tick += myTimer_Tick;
            }
    
            void myTimer_Tick(object sender, EventArgs e)
            {
                int elapsed_sec = DateTime.Now.Subtract(startTime).Seconds;
                T_time.Text = elapsed_sec.ToString() + " sec";
            }
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                startTime = DateTime.Now;
                myTimer.Start();
            }
        }
    }
    

    실행



    버튼을 누른 후의 모습.



    관련


  • unity > System.DateTime > 일요일부터 일수 계산하기 > now와 sunday 얻기 / int daysdiff = now.Subtract (sunday).Days;
  • Visual Studio / WPF > 이벤트 > Timer 처리를 사용한 시간 표시 | new TimeSpan(0, 0, 1); | DispatcherTimer | DateTime.Now.ToLongTimeString()
  • 좋은 웹페이지 즐겨찾기