Re: Checkboxen "verschwinden"

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance

From: Herfried K. Wagner [MVP] (hirf-spam-me-here_at_gmx.at)
Date: 11/09/04


Date: Tue, 9 Nov 2004 22:55:59 +0100

Hallo Frank!

"Frank Jeseit" <buddyholly4@gmx.de> schrieb:
>> Nicht gut. Erstelle die CheckBoxen im Hauptthread
>> und benutze 'Control.Invoke'/'Control.BeginInvoke'
>> zum Zugriff darauf aus dem anderen Thread.
>
> Das geht nicht. Ich lade in einem eigenen Thread eine
> Menge Plugins, die dann im Hauptform angezeigt werden.
> Der Ladefortschritt wird im Hauptform angezeigt.

Handelt es sich um UI-Plugins? Falls ja, warum verfrachtest du das Laden in
einen eigenen Thread? Lade doch einfach die Assembly und dann instanziere
die darin enthaltenen UI-Klassen im Hauptthread deiner Anwendung.

> Das Ganze funktioniert auch soweit wunderbar - nur
> Checkboxen machen Stress und auch nur dann, wenn
> sie Checked=true sind und direkt nach dem Laden angezeigt werden

Instanzmitglieder von Windows Forms-Steuerelementen und -Formularen sind
nicht sicher für Multithreading. Daher ist besondere Vorsicht einerseits
beim Zugriff, andererseits auch beim Kombinieren von Steuerelementen, die in
unterschiedlichen Threads erstellt wurden, geboten. Letzteres sollte auf
jeden Fall vermieden werden, für ersteres gibt es ja die zuvor beschriebenen
Techniken:

<URL:http://www.google.de/groups?selm=eCpgcMmxEHA.3976%40TK2MSFTNGP09.phx.gbl>

> Unter Win2k bestand das Problem jedenfalls nicht.

Glück/Zufall. Auf alle Fälle ist dein momentanes Design nicht "best
practice" und fehleranfällig.

-- 
Herfried K. Wagner [MVP]
<URL:http://dotnet.mvps.org/> 


Relevant Pages

  • Re: Checkboxen "verschwinden"
    ... Ich lade in einem eigenen Thread eine ... die dann im Hauptform angezeigt werden. ... > Laden in einen eigenen Thread? ... Das geht nicht, weil es sich wie gesagt um viele Plugins handelt, die viel ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: Thread Kontext bei Methodenaufrufen
    ... "MachWas" greift definitiv nicht auf irgendwelche ... Thread A und Thread B schon in der Methode "MachWas" stehen, ... Jeder Thread hat seinen eigenen Stack. ... muss der Zugriff synchronisiert werden. ...
    (microsoft.public.de.german.entwickler.dotnet.vb)
  • Re: Java Script Interpreter - Sicherheit
    ... den Zugriff auf externe Objekte ... externen Code intepretieren!? ... Du kannst versuchen, mit einem zweiten Thread den Thread, in dem du das Script ausführst, den ersten nach einer bestimmten Zeit zu beenden. ...
    (de.comp.lang.java)
  • Re: GUI Thread
    ... die Lösung ist schlichtweg ein Implementierungsfehler, der nicht zur Laufzeit in eine Ausnahme mündete. ... Du musst den direkten Zugriff auf das Steuerelement durch das Gespann 'Control.InvokeRequired' + 'Control.Invoke'/'Control.BeginInvoke' ersetzen. ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: Verstaednisfrage CCriticalSection
    ... um den gleichzeitigen Zugriff zu verhindern. ... Du kannst zB. festlegen, daß Du für einen bestimmten Zweck drei Integers, ... Deshalb wirst Du dann also eine CS vorsehen, die jeder Thread ... Visual C++-Dokumentation ...
    (microsoft.public.de.vc)