PDA

View Full Version : یک webbrower دارم ویه تعداد سایت در جدول.می خواهم همه را با هم یک زمان در خواست کنم



ali reza omid ali
شنبه 01 بهمن 1384, 16:07 عصر
سلام
یک webbrower دارم ویه تعداد سایت در جدول.می خواهم همه را با هم یک زمان در خواست کنم
.یک حالت مثل چند نخی نمی دانم باید چگونه پیاده سازی کرد که در یک زمان بتوان همه سایت را در خواست کرد و اگر یک واقع برای وب بوزر نوشتید هر کدام که کار دریافت سایت ان تمام شد جداگانه برای آن اجرا گردد

vcldeveloper
جمعه 07 بهمن 1384, 05:05 صبح
می تونید یک کلاس از TThread مشتق بگیرید و در آن یه شی از کلاس TIdHttp ایجاد کنید. در متد Execute کلاستون هم با استفاده از IdHttp لینک مربوطه را دریافت کنید. برای دریافت میزان پیشرفت کار هم می تونید از رویدادهای IdHttp استفاده کنید. نتیجه برگشت داده شده از IdHttp را هم می تونید از طرق مختلف به اطلاع Thread اصلی برسونید. ساده ترینش استفاده از تابع Synchronize هست، راههای دیگه ایی مثل ارسال پیغام به Thread اصلی یا استفاده از تکنیک های مختلف همزمان سازی هم وجود داره که می تونید ازشون استفاده کنید.
برای شروع کار می تونید از چیزی شبیه به کد زیر استفاده کنید (باید خودتون تکمیلش کنید):


unit RetriverThread;
interface
uses
Classes;
type
TUrlRetriverThread = class(TThread)
private
FUrl : WideString;
FOutputText : string;
protected
procedure Execute; override;
public
constructor Create(URL : WideString);
end;
implementation
{ Important: Methods and properties of objects in visual components can only be
used in a method called using Synchronize, for example,
Synchronize(UpdateCaption);
and UpdateCaption could look like,
procedure TUrlRetriverThread.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end; }
{ TUrlRetriverThread }
uses
IdHttp;
constructor TUrlRetriverThread.Create(URL: WideString);
begin
FUrl := URL;
inherited Create(False);
end;
procedure TUrlRetriverThread.Execute;
var
IdHttp : TIdHttp;
begin
FreeOnTerminate := True;
IdHttp := TIdHttp.Create(nil);
try
FOutputText := IdHttp.Get(FUrl);
//...
finally
IdHttp.Free;
end;
end;
end.

*مجبور نیستید حتما از Indy استفاده کنید.
برای دریافت اطلاعات بیشتر درباره IdHttp می تونید به راهنمای دلفی و Demo های Indy مراجعه کنید. در بعضی کتابهای آموزش دلفی هم می تونید مطالبی در موردش پیدا کنید، مثل Mastering Delphi.
برای آشنایی با TThread هم می تونید به راهنمای دلفی مراجعه کنید. برای بیشتر با نحوه نوشتن برنامه های Multi-threaded می تونید در همین سایت با استفاده از "جستجو پیشرفته" سایت کلماتی مثل Thread, Threading, multithreading یا سرنخ را جستجو کنید.
برای آشنایی کاملتر با مبحث Threading در دلفی می تونید به لینکی که آقای Inprise در آخرین پست تاپیک زیر ارائه کردند، مراجعه کنید:
http://www.barnamenevis.org/forum/showthread.php?t=5825&highlight=threading