2 Stimmen

Wie können Werte zwischen Threads übergeben werden?

Ich habe ein Windows Forms-Programm mit einem Formular MainForm. Bei einem Tastendruck starte ich einen Code, der alle 0,5 Sekunden auf einem anderen Thread läuft (pulsiert). Ich möchte viele Dinge, wie Beschriftungen, Fortschrittsbalken auf meinem MainForm, von der Pulse-Methode aus ändern. Wie ist das möglich? Ich würde also gerne wissen, wie man mit Variablen, Werten, in diesem Thread und dem MainForm interagieren kann. Sich gegenseitig modifizieren, etc.

Wenn ich auf die Foo-Taste klicke, sage ich meinem Pulsator, dass er starten soll. Pulsator.Initialize();

Hier ist die Klasse Pulsator:

public static class Pulsator
{
    private static Thread _worker;

    public static void Initialize()
    {
        _worker = new Thread(Pulse);
        _worker.IsBackground = true;
        _worker.Start();
    }

    public static void Close()
    {
        if (_worker != null)
        {
            _worker.Abort();
            while (_worker.IsAlive || _worker.ThreadState != ThreadState.Stopped)
            {
               //closing
            }
        }
    }

    public static void Pulse()
    {
        if (_worker != null)
        {
            while (true)
            {
                SomeOtherClass.Pulse();
                Thread.Sleep(500);
            }
        }
        else
        {
            SomeOtherClass.Pulse(); // yeah I know this doesnt needed
        }
    }
}

SomeOtherClass Pulse-Methode sieht aus wie :

    public static void Pulse()
    {
        //here I will have several values, variables, and I want to show results,
        // values on my MainForm, like:
        Random random = new Random();
        MainForm.label1.Text = random.Next(123,321).ToString(); // I hope you know what I mean
    }

Natürlich ist es viel komplizierter, es ist nur ein dummes Beispiel.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X