Usar un temporizador en las aplicaciones de Windows store (C#)

Pues eso… aquí tienes el ejemplo de cómo usar un temporizador (timer) en una aplicación de Windows Store (las que son especiales para Windows 8).

Si quieres saber los "detalles" (o la historia del agüelo) puedes leerla en la página con el código para Visual Basic.

 

El ejemplo es muy simple, tendremos un par de bloques de texto y un botón para iniciar/detener el temporizador.

Primero te muestro el código XAML del fichero MainPage.xaml y después veremos el código de C#.

 

MainPage.xaml:

<Page
    x:Class="Reloj_Windows_8_cs.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Reloj_Windows_8_cs"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <StackPanel Orientation="Vertical" Margin="10" HorizontalAlignment="Stretch"  VerticalAlignment="Center">
            <TextBlock x:Name="txtHora" Margin="20" Text="19:47:00" TextAlignment="Center" Foreground="Lime" FontWeight="Bold" FontFamily="Consolas" FontSize="72" />
            <TextBlock x:Name="txtFecha" Margin="10" Text="viernes 30 noviembre 2012" TextAlignment="Center" Foreground="Lime" FontWeight="Bold" FontFamily="Consolas" FontSize="36" />
            <StackPanel HorizontalAlignment="Center" Margin="10">
                <Button x:Name="btnStop" Content="Stop" Margin="20" Click="btnStop_Click" />
            </StackPanel>
        </StackPanel>
    </Grid>
</Page>

 

 

MainPage.xaml.cs:

/// <summary> /// An empty page that can be used on its own or navigated to within a Frame. /// </summary> public sealed partial class MainPage : Page { private int intervalo = 900; // La clase DispatcherTimer est\f1á\f0 definida en el espacio de nombres: // Windows.UI.Xaml private DispatcherTimer timer1; public MainPage() { this.InitializeComponent(); // crear el temporizador timer1 = new DispatcherTimer(); timer1.Tick += timer1_Tick; // el intervalo: 900 milisegundos (algo menos de 1 segundo (1seg = 1000ms)) timer1.Interval = new TimeSpan(0, 0, 0, 0, intervalo); //timer1.Start(); } /// <summary> /// Invoked when this page is about to be displayed in a Frame. /// </summary> /// <param name="e">Event data that describes how this page was reached. The Parameter /// property is typically used to configure the page.</param> protected override void OnNavigatedTo(NavigationEventArgs e) { actualizarHora(); btnStop.Content = "Start"; btnStop_Click(btnStop, null); }

/// <summary> /// Asigna la fecha y hora en las cajas de texto /// </summary> private void actualizarHora() { this.txtHora.Text = DateTime.Now.ToString("HH:mm:ss"); this.txtFecha.Text = DateTime.Now.ToString("dddd, dd MMMM yyyy"); } /// <summary> /// Este evento es del temporizador y /// se ejecutar\f1á\f0 en cada intervalo. /// </summary> /// <remarks> /// Es conveniente no usar un valor muy peque\f1ñ\f0 o para el intervalo /// lo recomendable es un poco menos de 1 segundo (1000 milisegundos) /// En el programa utilizo un valor de 900 milisegundos /// </remarks> private void timer1_Tick(object sender, object e) { actualizarHora(); } private void btnStop_Click(object sender, RoutedEventArgs e) { if (btnStop.Content.ToString() == "Stop") { timer1.Stop(); btnStop.Content = "Start"; } else { timer1.Start(); btnStop.Content = "Stop"; } } }

 

Espero que te sea de utilidad.

¡esa es la intención! 😉

 

Por cierto, esta aplicación la publicaré en el Windows Store y allí la iré actualizando (ya te avisaré cuando esté publicada, si es que la publican, claro).

Como me gusta que las cosas sean "gratis" el precio será de 0 euros, pero como también sé que hay gente que le gusta colaborar (económicamente) con mi(s) sitio(s) (o conmigo para que siga manteniendo mis sitios), y eso de usar PayPal no les gusta mucho, he pensado que también habrá una versión de pago (algo simbólico, supongo que medio euro o un USD dólar o algo así).

Ya te avisaré también… ¡que a todos nos hace falta seguir manteniéndonos! jeje

Nos vemos.

Guillermo

 

Enlaces a los otros artículos de este "paso a paso":

  1. Usar un temporizador en las aplicaciones de Windows store (Visual Basic)
  2. Usar un temporizador en las aplicaciones de Windows store (C#)
  3. Pon una AppBar en tu aplicación de Windows Store
  4. Acceder a los recursos de una aplicación de Windows Store desde código (vb, c#, xaml)
  5. Actualizar el icono (tile) de una aplicación de Windows Store (cada minuto)
  6. Saber cuando la aplicación está en modo Snapped y actuar en consecuencia

Esta entrada fue publicada en cosas técnicas, mis cosas y etiquetada , , , , , , . Guarda el enlace permanente.