Éric Fleming Bonilha wrote: > But the main thread should not be blocked right?
Correct, there must be something else blocking. You can try a simple test application (V6). Create a new VCL forms application and drop a TButton and a TLabel onto the form. Paste the code below into the editor and assign the OnClick event. //------------------ unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OverbyteIcsWndControl, OverbyteIcsWSocket, StdCtrls; type TMyThread = class(TThread) private procedure WSocket1DnsLookupDone(Sender: TObject; ErrCode: Word); protected procedure Execute; override; end; TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private procedure WmUser(var Msg: TMessage); message WM_USER; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} { TMyThread } procedure TMyThread.WSocket1DnsLookupDone(Sender: TObject; ErrCode: Word); begin PostMessage(TWSocket(Sender).Handle, WM_QUIT, 0, 0); PostMessage(Form1.Handle, WM_USER, 0, 0); end; procedure TMyThread.Execute; var WSocket1 : TWSocket; begin WSocket1 := TWSocket.Create(nil); try WSocket1.OnDnsLookupDone := WSocket1DnsLookupDone; WSocket1.DnsLookup('foo'); WSocket1.MessageLoop; finally WSocket1.Free end; end; var Cnt: Integer; procedure TForm1.WmUser(var Msg: TMessage); begin Inc(Cnt); Label1.Caption := IntToStr(Cnt); end; procedure TForm1.Button1Click(Sender: TObject); var I : Integer; begin Cnt := 0; Label1.Caption := '0'; for I := 1 to 10 do begin with TMyThread.Create(FALSE) do begin FreeOnTerminate := TRUE; Sleep(0); end; end; end; end. //------------------ -- To unsubscribe or change your settings for TWSocket mailing list please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be