Hi,
vorab: ich habe noch nicht wirklich viel Erfahrung in der Thread-Programmierung, daher kann es sein, dass ich das Ganze auch komplett falsch angehe
Ich möchte ein Programm schreiben, das mir den MJPEG-Stream meiner Überwachungskamera(s) anzeigt.
Dazu habe ich mir eine Klasse TMJPEGClient geschrieben, welche von TThread abgeleitet ist.
Im OnExecute instanziiere ich ein TIdTCPClient, baue die Verbindung auf und empfange den Stream.
Sobald ein Frame empfangen wurde, feuere ich ein Event (
NotifyJPEGReceived(Data: TMemoryStream);
über Synchronize ab.
Im
GUI-Thread wird dieses Event dann abgerufen und Data in einem Image-Control dargestellt.
Eigentlich funktioniert alles genau so wie ich es mir wünsche.
Aber:
Wenn ich das Programm einfach beende, während der Thread noch läuft, hagelt es Fehlermeldungen:
Zitat:
Im Projekt MJPEGTest.exe ist eine
Exception der Klasse EIdSocketError mit der Meldung 'Socket-Fehler # 10093
' aufgetreten.
Zitat:
Im Projekt MJPEGTest.exe ist eine
Exception der Klasse EIdWinsockStubError mit der Meldung 'Fehler beim Aufruf der Winsock2-Bibliotheksfunktion recv: Die Anwendung hat die Funktion WSAStartup nicht aufgerufen, oder bei dieser Funktion ist ein Fehler aufgetreten' aufgetreten.
Zitat:
Im Projekt MJPEGTest.exe ist eine
Exception der Klasse EIdWinsockStubError mit der Meldung 'Fehler beim Aufruf der Winsock2-Bibliotheksfunktion WSAGetLastError: Die Anwendung hat die Funktion WSAStartup nicht aufgerufen, oder bei dieser Funktion ist ein Fehler aufgetreten' aufgetreten.
Zitat:
Im Projekt MJPEGTest.exe ist eine
Exception der Klasse EIdWinsockStubError mit der Meldung 'Fehler beim Aufruf der Winsock2-Bibliotheksfunktion shutdown: Die Anwendung hat die Funktion WSAStartup nicht aufgerufen, oder bei dieser Funktion ist ein Fehler aufgetreten' aufgetreten.
Ich habe das Beispielprojekt mal angehängt... Hat jemand ne Idee, was ich hier falsch mache?