Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > ICS и thread pop запрос


Автор: Rodeon 29.8.2008, 15:30
В интернете и на форуме есть материал по многопоточный пример использования ICS-совского пинга.
Можно ли реализовать на основе ICS компонентов многопоточную проверку почты!
На данный момент все раболтает через Indy в один поток и все слишком медленно, а имееться несколько ящиков!
В общих чертах может кто подскажет как это реализовать через ICS если возможно конечно!
Заранее спасибо за ответ!

Автор: SneG0K 29.8.2008, 16:03
Возможно... Создавай сколько нужно потоков, в каждом потоке динамически создавай компонент через который ты собрался проверять почту и выводи результат...

Автор: Rodeon 29.8.2008, 17:24
Так вот в этом то и загвоздка!
Раньше подключался к почте через indy:
Код

MainForm.POP3.Port:=110;
MainForm.POP3.Host:=temp;
MainForm.POP3.Username:=temp;
MainForm.POP3.Password:=temp;
MainForm.POP3.Connect;
if mainform.POP3.Connected then begin
----забираем почту-----
MainForm.POP3.Disconnect;

Перешел на ICS:
Код

pop3Cli.Host:='pop.mail.ru';
pop3Cli.Port:=110;
pop3Cli.UserName:='';
pop3Cli.PassWord:='';
pop3Cli.Connect;
if SyncPop3Cli.Connected then
----забираем почту-----

Это создание многопоточного запроса на пинг адреса:
Код

procedure TForm1.doPingClick(Sender: TObject);
var
    I, T: integer ;
begin
    T := HostNames.Lines.Count ;
    if T = 0 then exit ;
    if Sender = doPing1 then T := 1 ;
    LogWindow.Lines.Add ('') ;
    for I := 0 to Pred (T) do
    begin
        if HostNames.Lines [I] <> '' then
        begin
            with TPingThread.Create (True) do   // create suspended
            begin
                PingAddThread (ThreadId) ;      // keep threadid so it's freed
                FreeOnTerminate := True;
                PingId := succ (I) ;            // keep track of the results
                OnTerminate := PingThreadTermPing ;    // where we get the response
                PingHostName := HostNames.Lines [I] ;  // host name or IP address to ping
                PingTimeout := 4000 ;           // ms
                PingTTL := 32 ;                 // hops
                PingLookupReply := false ;      // don't need response host name lookup
                Resume ;                        // start it now
            end ;
        end;
    end ;
end;



Так вот я и не могу связать эту многопоточность с  ICS.
Кто-нибудь бы пример выложил или исходник процедуры как запрос в потоке отправлять!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)