Probleme mit Handle vom Thread
-
Hallo
mein Problem sieht wie folgt aus:
Ich habe meine Main - Instanz in der ich einen OPC Server initialisiere.
Danach möchte ich einen Thread starten und in diesem Thread soll auf den OPC Server zugegriffen werden. Hier liegt aber das Problem:
Ein Thread hat einen anderen Kontext als meine Main-Instanz. Heist wenn ich in dem Thread die Funktionen zum Schreiben auf meinen OPC Server aufrufe findet die Schreibmethode das Handle auf den OPC Server nicht.Nun hab ich gehört es gibt die Möglichkeit aus einem Thread einen Aufruf zu delegieren um auf die Instanz der Main-Instanz zuzugreifen.
Nur hab ich leider keinen Plan wie sowas gehen soll.
Und daher wollte ich wissen ob jemand weis wie sowas geht?Also wie kann man aus einem Thread auf den Main-Instanz zugreifen ?
mfg LordTerra
-
Zeig ev. mal ein Minimal Bsp.
Ausserdem hat dein Problem nicht viel mit ISO C++ zu tun, sondern eher WinAPI.Simon
-
also also grob umrissen:
in meinem Programm in der Funktion InitInstance:
opc_con = new OPC(); if(opc_con->ConnectOPC()){ opc_con->AddGroupOPC("TnT"); opc_con->AddItemOPC("FromTnT", "BatchID", VT_BSTR); . . . .aufgerufen... hierbei wird sich in meiner main instanz zu dem opc server connectet und ein item zu dem opc server hinzugefürgt
in meiner Funktion OnStart:
AfxBeginThread(Messung, this, THREAD_PRIORITY_NORMAL);//THREAD_PRIORITY_HIGHEST);wird ein thread gestartet...
in meinem Thread:
UINT Messung(LPVOID pParam) { CACS400App* pApp= (CACS400App*)pParam; pApp->OPCWriteItem("S", "1", "1234"); CString ps; ps=pApp->OPCReadItem("S", "1"); AfxMessageBox(ps);soll in das erzeugte item etwas reingeschrieben und danach etwas ausgelesen werden... und das funktioniert nicht...
weder das rein schrieben noch das raus lesen...ausserhalb des threads funktionieren diese funktionsaufrufe aber wunderbar
-
1. Verwende bitte [cpp] Tags.
2. Was heisst "funktioniert nicht"? Was passiert? Wie ist das Fehlverhalten?
3. Besteht denn die Verbindung noch, wenn du im Thread über die Verbindung kommunizieren willst? Wie wird garantiert, dass diese Verbindung besteht, so lange der Thread läuft?Grüssli
-
hat sich erledigt ..