View Full Version : مدیریت thread ها در indy
farhad110
دوشنبه 05 آذر 1386, 07:29 صبح
سلام. با indy چطور میشه تمام thread های ایجاد شده توسط کلاینتها رو پیدا کرد. (مثلا ارسال پیغام خاصی برای تمام کلاینتها)
تشکر
delphi5
دوشنبه 05 آذر 1386, 10:40 صبح
میتونی به اینجا سر بزنی
http://delphi.about.com/od/kbthread/Threading_in_Delphi.htm
و همچنین اینجا
http://delphi.about.com/od/kbwinshell/a/delphi_hook.htm
Touska
دوشنبه 05 آذر 1386, 12:35 عصر
یا Demo کاملی که در سایت قرار دادم.
جستجو کنید و موفق باشید :)
farhad110
دوشنبه 05 آذر 1386, 21:32 عصر
میتونی به اینجا سر بزنی
http://delphi.about.com/od/kbthread/Threading_in_Delphi.htm
و همچنین اینجا
http://delphi.about.com/od/kbwinshell/a/delphi_hook.htm
دوست عزیز این لینکها فقط برای اجرای threading در سیستمی هست که از multithread استفاده نمیکنه. به هر حال لطف کردی
یا Demo کاملی که در سایت قرار دادم.
جستجو کنید و موفق باشید :)
ممنون. demo ی جالبی هست. چک میکنم
vcldeveloper
سه شنبه 06 آذر 1386, 03:22 صبح
وقتی یک کلاینت به یک سور Indy متصل میشهد، در سمت سرور رویداد OnConnect فراخوانی میشه که Thread مربوط به اون کلاینت بصورت پارامتر بهش پاس داده شده. شما می تونید لیستی از Thread ها داشته باشید که هر کدام معرف یک کلاینت هستند. هر زمان که OnConnect فراخوانی شد، Thread را به لیست خود اضافه کنید، هر زمان که OnDisconnect فراخوانی شد، Thread را از لیست خود حذف کنید. اگر هم خواستید با کلاینت خاصی کاری انجام بدید، از طریق Thread مربوط به آن کار خود را انجام میدید.
farhad110
سه شنبه 06 آذر 1386, 18:05 عصر
آقای کشاورز دقیقا همین رو میخواستم.
اگر اشتباه نکنم TThreaList رو که تعریف کردم با add و remove باید thread های موجود رو داشته باشم. حالا اگر همزمان بخوام پیامی برای تمام thread های موجود در لیست بره باید چیکار کنم؟
تشکر
vcldeveloper
سه شنبه 06 آذر 1386, 23:06 عصر
حالا اگر همزمان بخوام پیامی برای تمام thread های موجود در لیست بره باید چیکار کنم؟
پیام را تک تک برای همه شان ارسال کنید.
Touska
پنج شنبه 08 آذر 1386, 09:03 صبح
فرض کن QClient یک TthreadList هست :
Try
With QClients.LockList Do
Begin
For I := 0 To Count - 1 Do
Begin
TIdPeerThread(Thread).Connection.WriteBuffer(Trans fer, SizeOf(Transfer), True);
End;
End;
Finally
QClients.UnlockList;
برای همه از لیست ارسال می کنی :)
farhad110
یک شنبه 11 آذر 1386, 07:08 صبح
برای دریافت و پردازش پیامهای رسیده توسط کلاینتها، بجز استفاده از readln و تایمر، راه بهتری هم هست؟
Touska
یک شنبه 11 آذر 1386, 10:09 صبح
می تونید از کلا از WriteBuffer و ReadBuffer استفاده کنید.
آن موقع می تونید حتی یک Record رو Send و Receive نمایید.
موفق باشید :)
farhad110
یک شنبه 11 آذر 1386, 13:45 عصر
می تونید از کلا از WriteBuffer و ReadBuffer استفاده کنید.
آن موقع می تونید حتی یک Record رو Send و Receive نمایید.
بدون استفاده از تایمر؟
چون ممکنه زمان زیادی به یک کلاینت پیامی ارسال نشه و پردازش تایمر جالب نیست
Touska
سه شنبه 13 آذر 1386, 17:30 عصر
اگه در سایت جستجو می کردی زودتر به جواب می رسیدی ؟
به لینک (http://barnamenevis.org/forum/showthread.php?t=52437) برو -- اینشا ا... مشکلت حل میشه
موفق باشید :)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.