[C#] Threadübergreifender Vorgang

10/11/2014 21:43 Frankfurt1337#1
Hallo Epvp!

Ich habe eine Windows Forms, nennen wir diese mal 'client', und möchte auf die Elemente in dieser Forms zugreifen.

Kein Problem, habe ich hinbekommen, allerdings möchte ich, das während der Client arbeitet (und das tut er ein kleines Weilchen) diesen anzeigen lassen, und nicht wie normal, ihn erst anzeigen lassen können, wenn das abgeschlossen sind.

Durch Google habe ich herausgefunden, dass für diese Situation ein neuer Thread gut wäre.

So sieht also mein Code vorher aus:

Code:
 private void Form1_Load(object sender, EventArgs e)
        {
            loadingLabel.Text = "Initializing...";
            AddItemLog("Initializing ...");
            Client.Protect();
        }
und so mein neuer:

Code:
Thread Client = new Thread(new ThreadStart(Function));
Client.Start();
"Function":
Code:
private void Function()
{
  loadingLabel.Text = "Initializing...";
            AddItemLog("Initializing AntiCheat...");
}
Dann bekomme ich aber, wie der Titel sagt, eine Exception, ein Threadübergreifender Vorgang sei nicht möglich (von einem anderen Thread auf ein Element zugreifen, dass von einem anderen erstellt wurde).

AddItemLog fügt übrigens einer ListBox einen Eintrag zu.

Nun, ich habe schon wirklich viel geschaut im Internet, aber nichts gefunden, was mir selbst wirklich geholfen hat, hab ich einfach nicht hinbekommen.

Wäre toll, wenn jemand von euch dafür eine Lösung hätte :) :handsdown:

- Jan
10/11/2014 21:56 snow#2
[Only registered and activated users can see links. Click Here To Register...]
10/11/2014 22:03 Frankfurt1337#3
Quote:
Originally Posted by snow View Post
[Only registered and activated users can see links. Click Here To Register...]
Danke, hab's jetzt so hinbekommen:

Code:
loadingLabel.Invoke(new EmptyFunction(delegate()
                {
                    loadingLabel.Text = Text.ToString();
                }));
Kann geschlossen werden :)
10/11/2014 22:42 snow#4
Danke für das Posten deiner Lösung. :)

#closed (on request)