STA-Modus für Thread festlegen

30/10/2008 - 16:48 von Marcel Müller | Report spam
Hallo NG,

ich habe ein Problem. Mehrere Instanzen meiner Anwendung tauschen über TCP
Nachrichten miteinander aus. Das klappt soweit auch. Nun hat sich die
Anforderung ergeben, daß wenn ein Teilnehmer die Ansicht wechselt, diese bei
den Anderen auch umgestellt werden soll. Ich dachte das könnte nicht so
schwer sein. Ich untersuche das was hereinkommt darauf, ob es sich um einen
bekannten Befehl handelt und reagiere dementsprechend.

Soweit die Theorie. Die Stelle an der sie nicht mehr funktioniert, ist die
mit dem reagieren. Und dabei wàre das relativ simpel, was ich versuche auf
diesen Befehl hin auszuführen:

ListView2.Visible = True

Dabei kommt es zu folgender Fehlermeldung:


Fehler bei der Drag-Drop-Registrierung

************** Ausnahmetext **************
System.InvalidOperationException: Fehler bei der DragDrop-Registrierung >
System.Threading.ThreadStateException: Für den aktuellen Thread muss der
STA-Modus (Single Thread Apartment) festgelegt werden, bevor OLE-Aufrufe
ausgeführt werden können. Stellen Sie sicher, dass die Hauptfunktion mit
STAThreadAttribute gekennzeichnet ist.


Ich habe bereits gegoogelt. Müßte nicht die zweite Zeile den Status so
setzen, wie von der Fehlermeldung verlangt?

listenerThread = New Threading.Thread(AddressOf DoListen)
listenerThread.SetApartmentState(Threading.ApartmentState.STA)

Resultiert in der gleichen Fehlermeldung. Oder liegt es nicht an dem
Listener-Thread, sondern an dem der Hauptanwendung (Form1)? Ich weiß nicht
weiter.

Bitte helft mir, was ist zu tun?

Gruß,

Marcel
 

Lesen sie die antworten

#1 Armin Zingler
30/10/2008 - 17:07 | Warnen spam
"Marcel Müller" schrieb
ListView2.Visible = True



Welchen Wert hat die Eigenschaft ListView2.InvokeRequired an dieser Stelle?
Wenn True, dann muss die Prozedur, die auf das Listview zugreift, per
ListView2.Begininvoke aufgerufen werden.


Armin

Ähnliche fragen