Hallo Leute,
ich habe folgendes Problem:
Mein Programm (Spiel-Client) will nicht, dass die exe-Datei mehrfach gestartet wird. Aber man kann öfter mal mehrere Clients brauchen, weswegen es nicht schlecht wäre, wenn man vier, fünf oder mehr Clients öffnen könnte.
Ich habe mir nun überlegt, dass das mit Threads funktionieren könnte. Ein Freund von mir hat es in Java fertig gebracht, das Programm bis zu 17 mal zu starten (danach
RAM-Überlastung 8)).
In Delphi habe ich es so programmiert...
Dies ist der Aufruf in der BasisKlasse:
Delphi-Quellcode:
var Prozesse: array of Thread;
Anzahl: integer;
i,x:integer;
begin
Anzahl:=StrToInt(edAnzahl.Text);
if Anzahl < 2 then
Anzahl:=2;
SetLength(Prozesse,Anzahl);
for i:=0 to Anzahl-1 do
begin
Prozesse[i]:=Thread.Create(true);
setPfad(path);
Prozesse[i].Priority:=tpHighest;
Prozesse[i].Resume;
if i=Anzahl-1 then
begin
for x:=0 to Anzahl-1 do
begin
Prozesse[i].Terminate;
end;
end;
end;
Und so sieht der Thread aus:
Delphi-Quellcode:
constructor Thread.Create(CreateSuspended:boolean);
begin
inherited Create(CreateSuspended);
Priority:=tpHighest;
FreeOnTerminate:=True;
end;
procedure Thread.Execute;
begin
ChDir(path);
ShellExecute(
handle,'
open','
Client.exe',
NIL,
NIL,SW_SHOWNORMAL);
end;
Komischerweise, und das kenne ich von einem anderen Tool, das das selbe bewirken soll, startet das Programm manchmal zwei Clienten, manchmal sieben oder auch nur einen.
Habt ihr eine Ahnung, wie ich das optimieren könnte, damit der Start schneller abläuft oder so?