Ci sono alcune cose che potresti fare con questo. Il pugno usa qualcosa come Environment.TickCount come la persona here. Tuttavia, qualcosa che penso possa funzionare meglio è utilizzare uno DispatcherTimer.
Per impostare un DispatcherTimer in modo che funzioni come un cronometro, è necessario anche un TimeSpan associato che rappresenti l'ora in cui viene eseguito. Possiamo creare un'istanza di DispatcherTimer e impostare l'intervallo in base al momento e il gestore per l'evento Tick.
DispatcherTimer _timer;
TimeSpan _time;
public Page()
{
InitializeComponent();
_timer = new DispatcherTimer();
_timer.Interval = new TimeSpan(0, 0, 0, 0, 10);
_timer.Tick += new EventHandler(OnTimerTick);
}
Nell'interfaccia utente possiamo creare qualcosa di semplice per avviare e fermare la nostra timer, così come visualizzare i dati del cronometro:
<StackPanel>
<Button Content="Start" x:Name="uiStart" Click="OnStartClick" />
<Button Content="Stop" x:Name="uiStop" Click="OnStopClick" />
<TextBlock x:Name="uiDisplay"/>
</StackPanel>
Ora, tutto ciò che rimane è il gestori di eventi.
Il gestore OnTimerTick incrementerà e visualizzerà i dati del cronometro.
Il nostro gestore di Start si prenderà cura di inizializzare/reinizializzare il nostro TimeSpan, mentre il gestore di Stop fermerà il DispatcherTimer.
void OnTimerTick(object sender, EventArgs e)
{
_time = _time.Add(new TimeSpan(0, 0, 0, 0, 10));
display.Text = _time.ToString();
}
private void OnStartClick(object sender, RoutedEventArgs e)
{
_time = new TimeSpan(0,0,0,0,0);
_timer.Start();
}
private void OnStopClick(object sender, RoutedEventArgs e)
{
_timer.Stop();
}
interessante poiché questa pagina sembra indicare che esiste - http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.startnew(v=VS.95).aspx –
@James che è davvero molto interessante. O quella pagina è lì per errore, o forse arriva a SL5. Questo post suggerisce di poter fare riferimento alla DLL WP7 e utilizzare quella classe di cronometro. Non l'ho provato però. http://forums.silverlight.net/forums/p/207108/486425.aspx – Oskar
@James, @Oskar: il cronometro per Silverlight esiste, ma solo per XNA Framework. Vedere la sezione Informazioni sulla versione del collegamento e confrontarla con qualcosa come System.Boolean: http://msdn.microsoft.com/en-us/library/system.booleano% 28v = VS.95% 29.aspx –