Bonjour,
Je débute avec les threads en C#. Et lorsque je tente d’accéder à un objet de mon programme principal après avoir passé sa référence à mon thread. J'ai le message suivant :
L'exception InvalidOperationException n'a pas été gérée
Le thread appelant ne peut pas accéder à cet objet parce qu'un autre thread en est propriétaire.
Voici mon code d'appel dans la classe principale :
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
private void button1_Click(object sender, RoutedEventArgs e)
{
    ThreadTest threadTest = new ThreadTest(ref progressBar1);
 
    Thread t = new Thread(new ThreadStart(threadTest.TreadProc));
 
    t.Start();
}
Et voici le code de mon thread :
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class ThreadTest
{
    private ProgressBar BarreProgression;
 
    public ThreadTest(ref ProgressBar BarreTransfert)
    {
        BarreProgression = BarreTransfert;
    }
 
    public void TreadProc()
    {
        for (int i = 0; i <= 100; i++)
        {
            BarreProgression.Value = i;
            Thread.Sleep(1000);
        }
    }
}
Est-ce que quelqu'un sait pourquoi ça ne marche pas ? Peut-être que je m'y prend vraiment comme un manche…