Problem mit Bootloader Pc Programm "Invoke"

Gast #3224533
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
Gast #3226295
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
});

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren