Forum: PC-Programmierung Problem mit Bootloader Pc Programm "Invoke"


von peterle (Gast)


Lesenswert?

Guten Abend,
habe bereits in einem Anderem Trend mein Problem 
geäußert.Beitrag "Re: UART Bootloader ATtiny13 - ATmega644".
Da ich von C# keinen Schimmer habe und ich aber trotzdem das Programm 
irgend wie zum laufen bringen möchte wende ich mich nochmal an das 
Forum.

Anscheinend muß der Block unten mit Invoke gefixt werden.



1
if ((this.MyAVRBootloader.BootloaderRevision != 0) && (this.txtbootversion.Text.Length < 1))
2
                {
3
                    this.txtbootversion.Text = this.MyAVRBootloader.BootloaderRevision.ToString("X");
4
                    this.txtboottarget.Text = this.MyAVRBootloader.DeviceID.ToString("X");
5
                    this.txtboottarget.Text += " - [" + this.MyAVRBootloader.AvrGetDeviceNameFromID("", this.MyAVRBootloader.DeviceID) + "]";
6
                    this.txtbootinfo.Text = "Flash: " + this.MyAVRBootloader.FlashSize.ToString();
7
                    this.txtbootinfo.Text += " - Buffer: " + this.MyAVRBootloader.Buffersize.ToString();
8
}
Ich hoffe das ich nicht Frech wirke wenn ich mich nochmal hier melde.
Außerdem hoffe ich das ich die nötigen Infos geliefert habe.
Ich bitte um Nachsicht wegen meiner erneuten Hilfe suche.

Vielen Dank im Voraus

Peter

von peterle (Gast)


Lesenswert?

Ist meine Bitte unverschämt?
Sollte dies sein Bitte ich um Entschuldigung!
Peter

von bluppdidupp (Gast)


Lesenswert?

Die Standard GUI-Elemente von Windows sind nicht threadsafe, d.h. 
versucht man z.B. den Text von GUI-Elementen aus anderen Threads heraus 
zu verändern könnte das Programm seltsame Fehler verursachen oder 
abstürzen.
In .NET hat Microsoft daher diese "Ungültiger threadübergreifender 
Vorgang..."-Exception eingebaut.

Mittels Invoke kann man Code in einem anderen Thread ausführen.
Eine wenig Schreibarbeit verursachende Variante ist:
1
this.Invoke((MethodInvoker)delegate
2
{
3
    // Hierhin, den Code der im GUI-Thread ausgeführt werden soll
4
    // also quasi dein Code-Block von oben
5
});

von peterle (Gast)


Lesenswert?

Vielen Vielen Dank für Deine Hilfe!
Jetzt Klapt es wunderbar.
Ich werde morgen den Code in der Codesammlung einstellen.

Danke
Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.