![]() |
Konsolenprogramm und Multithreading
...oder so...^^
NajaHab das mit meinem Server-Client gedöns halbwegs zum laufen gebracht.. Nur mein Problem ist halt das mein Server nix macht solange readln aktiv ist... readln friert das ganze Programm ein.. Bisher hab ich es gemacht das man eben nichts eingeben kann im Server aber das soll nicht so sein... Kann ich nicht den Server oder so in nen anderen Thread verlagern und von da aus mit writeln Sachen schreiben aber trotzdem mit readln in der Hauptanwendung benutzen ? :freak: Ich hoffe ihr wisst was ich meine *g* Gruß Neutral General |
Re: Konsolenprogramm und Multithreading
Zitat:
|
Re: Konsolenprogramm und Multithreading
Ok kann mir das jemand bitte erklären :oops:
Ich hab mich noch nie wirklich mit Threads beschäftigt und wenn dann hab ich da nie wirklich durchgeblickt.. Also ich habs im Moment so:
Delphi-Quellcode:
So läuft der Server zwar aber mit readln is da nix.. Läuft genauso wie ohne Thread :|
type
TMyServerThread = class(TThread) protected procedure Execute; override; public Server: TMyServerSocket; constructor Create(CreateSuspended: Boolean); end; { TMyServerThread } constructor TMyServerThread.Create(CreateSuspended: Boolean); begin inherited Create(CreateSuspended); Server := TMyServerSocket.Create; Server.Port := 1235; Server.Initialize; end; procedure TMyServerThread.Execute; begin while not Terminated do Application.ProcessMessages; end; var ST: TMyServerThread; begin ST := TMyServerThread.Create(true); ST.Execute; readln; ST.Suspend; ST.Terminate; St.Free; end. Gruß Neutral General |
Re: Konsolenprogramm und Multithreading
Einfaches BSP:
Delphi-Quellcode:
program thread;
{$APPTYPE CONSOLE} uses Windows; function UnserThread(zahl: Pointer): LongInt; stdcall; begin Sleep(2000); WriteLn('UnserThread ist fertig'); Result:=0; end; var ThreadID: DWORD; //Thread-ID ThreadHandle: THandle; //Rückgabewert von CreateThread begin WriteLn; WriteLn('Unser Thread-Testprogramm ist gestartet.'); WriteLn('Nun erzeugen wir den neuen Thread!'); ThreadHandle:=CreateThread(nil, 0, TFNThreadStartRoutine(@UnserThread), nil, 0, ThreadID); //wenn der Thread erfolgreich gestartet wurde (ThreadHandle<>0), können //wir ThreadHandle wieder freigeben: if ThreadHandle<>0 then CloseHandle(ThreadHandle); WriteLn('Das Hauptprogramm ist nun am Ende angekommen.'); //Automatisches Schließen der Konsole verhindern: ReadLn; end. |
Re: Konsolenprogramm und Multithreading
uiiiiiiiiiiiiiiiiiiii :)
Sooo muss das gehn :) Danke.. :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz