Zugriff auf Events von zur laufzeit erstellten Objekten?
-
huhu!
Gerade eben hab Multi-Threading hinbekommen. *stolz auf sich ist*
Was ich versuche zu realisieren ist ein Downloadproggy mit Indy das mit mehreren Threads downloaden kann.
Meine Frage ist nun Folgende:
Soll ich nun für jeden Thread ein eigenes IdHTTP erzeugen? Wie kann ich die Events, die dieses neu erzeugte Objekt erzeigt zugreifen? (brauche ich für meine Fortschrittsanzeige etc).Und wenn ich schonmal dabei bin:
DWORD WINAPI MainDL(LPVOID data) { TMemoryStream *mem = new TMemoryStream(); AnsiString strURL = "http://localhost/558_tetris_japan_finals.mpeg"; AnsiString strTarget = "C:\\test1.mpeg"; try { frmMain->IdHTTP->Get(strURL, mem); mem->SaveToFile(strTarget); } catch (EIdHTTPProtocolException &error) { Application->MessageBox(frmMain->IdHTTP->ResponseText.c_str(), "title", MB_OK); } return((DWORD)data); }
aufgerufen im moment noch mit:
hThread = CreateThread(NULL, 0, MainDL, (LPVOID)1, 0, &dwThreadID);
Wie kann ich dieser Funktion noch weitere Parameter übergeben, ausser (LPVOID)1?
Quelle btw: http://www.codeworx.org/cpp_tuts_1_5.php
Danke für die Hilfe schonmal im Vorraus!
-
Hi,
Wie kann ich dieser Funktion noch weitere Parameter übergeben, ausser (LPVOID)1?
naja so zum Beispiel:
struct T { String Name; int Alter; }; // und dann: T* t=new T; t->Name="Andreas"; t->Alter=30; hThread = CreateThread(NULL, 0, MainDL,(void*) t, 0, &dwThreadID);
-
stimmt, daran hatte ich noch garnicht gedacht... dank dir
-
zu meinem anderen problem keine idee?
-
Vielleicht schaust du mal in die FAQ`? (-;
Ahja, ich weiss nicht ob es vielleicht bequemer ist, TThread zu verwenden. Aber du kannst natürlich gerne mit der WinAPI arbeiten (:
-junix
-
ich hab in der FAQ geguckt und weder was zu CreateThread noch zu TThread gefunden (wusste garnicht, das es TThread gibt *duck*).
aus der hilfe läßt sich leider auch nicht entnehmen, wie ich das mit den Ereignissen bewältigen kann...
-
Original erstellt von Professor:
aus der hilfe läßt sich leider auch nicht entnehmen, wie ich das mit den Ereignissen bewältigen kann...Aber aus der FAQ!