Autor Beitrag
mo78
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 19.03.12 15:57 
Hallo,
ich habe folgendes Problem

Ich habe eine Form die einen Thread startet
Die funktion die der Thread aufruft, ruft eine Methode einer klasse auf
die mehrere anweisungen abarbeitet und dabei eine Counter Variable mitzählt.
Für die Counter Variable habe ich eine getter Methode erstellt.

Wie kann ich nun das bei jedem hochzählen der CounterVariable der wert an die Progessbar übergeben wird.

Das updaten in der Form habe ich per invoke und einem delegate gemacht.

Oder ist der gesammte ansatz ein wenig zu kompliziert ???

Hier mal ein paar Relevante code aussschnitte aus der Form
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
//progressbar update
private delegate void ProgressbarUpdateDelegate(int value);

        private void UpdateProgressbar(int value)
        {
            if (proBarKey.InvokeRequired)
            {
                proBarKey.Invoke(new ProgressbarUpdateDelegate(UpdateProgressbar), new object[] { value });
                return;
            }

            proBarKey.Value = value;
        }

private void bt_Click(object sender, EventArgs e)
        {
            int rows = 6
            proBarKey.Maximum = rows;
            proBarKey.Minimum = 0;
            proBarKey.Step = 1;
            synD = new Thread(new ThreadStart(syn));
            proBarKey.Visible = true;
            synD.Start();
        }

public void syn(){
            klasse.methode(value);
            //in der classe wird eine Variable mitgezählt
            //welche übe die Property klasse.Counter ansprechbar ist
            Thread.CurrentThread.Abort();
        }


Schonmal besten Dank für jegliche hilfe

mfg
mo
paddy14
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122



BeitragVerfasst: Mo 19.03.12 17:27 
Hi,
also ich hatte auch oft das Problem das ich aus einer Klasse eine Progressbar oder eine Textbox ansprechen wollte, bisher habe ich keine andere Moeglichkeit gefunden als mir eine weitere Klasse zu schreiben.

Ich weis nicht ob das so gut ist aber der ablauf ist folgender:

Du hast deine Form wo deine ganzen Steuerelemente dagestellt werden, dort habe ich getter und setter Methoden eingebaut welche einen kontrollierten Zugriff auf die Steuerelemente haben. Ich habe mir auch noch eine weitere Klasse geschrieben welche meine Form uebergeben bekommt z.B. durch den kontruktor, dort sind dann Methoden drinn welche die getter und setter aufruft und mit Werten versorgt.
Diese behelfsklasse uebergebe ich der eigentlichen Klasse welche die Berechnungen ausfuehrt.
In deinemfalle ruft dann die Berechnungsklasse eine Methode von der Behelfklasse auf uebergibt die Werte die diese dann an die Form weiterleitet und somit dann deine Progressbar steuert.

Also ich persoenlich finde das ein bissl unschoen, aber ich weis es nicht besser und hoffe doch, das hier jemand schreibt wie man es elegant hinbekommt ;) aber so wuerde ich das erst einmal probieren.
mo78 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 27.03.12 11:03 
Ah das ist ja schonmal ein ansatz.

Werde das mal ausprobieren.

Besten Danke erstmal ;)

mfg
mo