Comment puis-je accéder à des variables à partir d'un autre thread?

D'erreur: inter-threads non valide: le Contrôle 'label1' accessible à partir d'un thread autre que le thread qu'il a été créé.

Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        string CONNECTING = "Connecting to server...";
        string GETTING_DATA = "Getting data...";
        string CONNECT_FAIL = "Failed to connect!";
        string CONNECT_SUCCESS = "Connection established!";

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Thread t1 = new Thread(run);
            t1.Start();
        }

        public void run() {
            label1.Text = CONNECTING;
        }
    }
}

Comment résoudre ce problème? J'ai essayé d'utiliser CheckForIllegalCrossThreadCalls = false; mais que de toute évidence les causes des erreurs.

J'aimerais aussi savoir comment je peux arrêter le fil, car il ne peut pas être plus accessible à l'extérieur de la fonction.

Merci d'avance!

  • ce n'est pas une variable globale, et vous devriez l'appeler
  • Comment dois-je procéder?
  • double possible de inter-threads non valide
InformationsquelleAutor Adam | 2013-07-25