Multithread Application



  • Jo, doch das müsste reichen... Aber natürlich konsequent... hmm

    Ich denk mal über dein problem nach... Rufst du die DLL-Funktion in verschiedenen Threads "gleichzeitig" auf?

    -junix



  • &junix:
    Negativ, dieser Thread mit dem DLL-Call wird nur einmal aus Unit1.cpp aufgerufen.
    Wo genau müsste ich denn die CriticalSection hinpacken? Ich hab es einmal in unit1.cpp versucht, und zwar an der stelle:

    void __fastcall TForm1::BitBtn3Click(TObject *Sender)
    {
    ...
             //Der Thread ist in der Unit3.h definiert
             TCS->Aquire();
             TReleaseShutterThread *trst = new TReleaseShutterThread(true);
             trst=&TReleaseShutterThread(true);
             trst->Priority=tpNormal;
             trst->Resume();
             TCS->Release()
    ...
    }
    

    Vielleicht ist die stelle falsch?
    Oder die Umstände sind einfach so blöd, dass ich es hinnehmen muss, diesen Aufruf in der unit1.cpp zu lassen und damit ein kurzes Einfrieren zu riskieren 😢
    Danke nochmals, junix 🙂



  • Das war... ... voll der Zonk (o;

    Du müsstest die Critical Section nur Locken bevor du die DLL-Funktion aufrufst und gleich anschliessend freigeben. Aber da du die DLL Funktion ehnur an einem Örtchen aufrufst, kannst du sie auch weglassen, dann ists kein Synchronisationsproblem... ...Was mach die DLL_Funktion denn? Irgendwelche WindowsMessages versenden?

    -junix



  • &junix:
    Die DLL kommuniziert mit einem Anderen Programm, dass im Background offen sein muss. Dieses Programm kann von dem PC aus den Auslöser einer Digitalkamera betätigen und das Bild fetchen.
    Aber was die Funktion in der DLL genau macht weiß ich nicht, und wie die Kommunikation läuft weiß ich auch nicht.



  • Gibst du der Funktion irgendwelche WindowHandles mit?

    -junix



  • Nein, 2 Integer, die irgendwas bestimmen (weiß gerade nicht genau was es ist) und einen Char, wo der Name des gefetchten Bildes abgespeichrt wird.... man ich bin echt am Verzweifeln.


Anmelden zum Antworten