2013-04-17 119 views
1

我已经使用下面的代码实现了向上计时器(或秒表)。我想知道是否有一个高效和标准的方式来实现这个在Windows手机上使用C#。在Windows Phone应用程序中使用c计数定时器#

任何建议,将不胜感激。

private void start_click() 
{ 
    lhours = 0; lmins = 0; lsecs = 0; lmsecs = 0; 
    myDispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 1000); // 1000 Milliseconds 
    myDispatcherTimer.Tick += new EventHandler(Each_Tick); 
    myDispatcherTimer.Start(); 
} 
public void Each_Tick(object o, EventArgs sender) 
{  
    lsecs = lsecs + 1; 
    if (lsecs > 59) 
    { 
     lsecs = 0; 
     lmins = lmins + 1; 
     if (lmins > 59) 
     { 
      lmins = 0; 
      lhours = lhours + 1; 
      if (lhours > 23) 
      { 
       lhours = 0; 
       ldays = ldays + 1; 
      } 
     } 
    } 

    lblTimerDisplay.Text = ldays + ":" + lhours + ":" + lmins + ":" + lsecs + ":"; 
} 

回答

5

为什么不使用Stopwatch类?

System.Diagnostics.Stopwatch _sw = new System.Diagnostics.Stopwatch(); 
private void start_click() 
{ 
    if (!_sw.IsRunning) 
    { 
     _sw.Start(); 
    } 
    else 
    { 
     _sw.Stop(); 
     _sw.Reset(); 
    } 
} 
private void Each_Tick(object sender, EventArgs e) 
{ 
    lblTimerDisplay.Text = _sw.Elapsed.ToString(); 
} 
+0

感谢您的帮助,但在何处以及如何调用此start_click()和Each_Tick()方法?任何建议都会很好,对WP8来说是新的 – Debhere

2

另一个简单的办法就是拯救DateTime.UtcNow当您从当前DataTime.UtcNow是初始化计时器,然后在剔减。

在定时器初始化:

DateTime startTime = DateTime.UtcNow; 

对蜱:

TimeSpan elapsedTime = DateTime.UtcNow - startTime; 

然后你可以用时间跨度参数,以获得天数,小时,分钟和秒显示。

相关问题