none
Como acceder a propiedades de controles de WindowsPhone mediante Hilos? RRS feed

  • Pregunta

  • Hola que tal tengo el siguiente el código en mi app windows phone, pero cuando trato de modificar el contenido de un control TextBloc en su propiedad text con un hilo tengo el siguient error:

    Invalid cross-thread access

    Como puedo evitar esto?? Gracias!

    namespace PhoneApp2
    {
        public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
            public MainPage()
            {
                InitializeComponent();
            }
    
            private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
            {
    
            }
    
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                Thread Hilo = new Thread(new ThreadStart(Funcion));
                Hilo.Start();
            }
    
            private void Funcion()
            {
                for (int Contador = 0; Contador <= 10; Contador++)
                {
                    PageTitle.Text = Convert.ToString(Contador); //AQUÍ TENGO EL ERROR
                    Thread.Sleep(500);
                }                
            }
        }
    }

    lunes, 9 de julio de 2012 4:49

Respuestas

  • Hola!

    Para poder modificar un control desde un hilo distinto al de interface de usuario tienes que usar un Dispatcher, tu código quedaría así:

            private void Funcion()
            {
                for (int Contador = 0; Contador <= 10; Contador++)
                {
                    System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
                    {
                         PageTitle.Text = Convert.ToString(Contador); 
                    });
                    Thread.Sleep(500);
                }                
            }
    

    Por cierto, el Thread.Sleep(500) supongo que será solo para el ejemplo, no pensarás que esa línea de código vaya a producción verdad? ;-)


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    lunes, 9 de julio de 2012 6:37
    Moderador