نوشته شده توسط
AmirBeginner
یعنی همش از synchronize استفاده شده که...
فایده ای نداره
چی فایده ای نداره؟ من متوجه منظور شما نمیشم.
چرا چسبیدین به synchronize؟ من یه مثال ساده زدم و در مورد به کامپوننت خاص قرار بود یه کاری بکنیم و تمام!
تا اونجایی که من فهمیدم : شما میخوای یه مقادیری بفرستی داخل Thread برای چک کردن قفل، بعد نتیجه رو بفرستی به Main که آیا برنامه، ادامه روند کار رو انجام بده یا نه؟ خوب این چه ربطی به synchronize داره؟ یا اینکه "کد رو تو ترید اصلی برنامه اجرا میکنه" یا نه؟
راه حل نمونه:
- یه Thread می سازید، اگه مقادیری لازمه که هنگام اجرای Thread به اون بدید باید سازنده رو Override کنید، و مقادیر ورودی رو به Thread وارد کنید، مثلاً یه چیزی مثل قطعه کد زیر :
constructor TCheckLock.Create(bCreateSuspended: Boolean;
MyParam1,
MyParam2,
MyParam3 : String;
);
begin
FreeOnTerminate := True;
FFirstParam := MyParam1; // یه متغیر خصوصی عضو کلاس Thread
FSecondParam := MyParam2;
FThirdParam := MyParam3;
// کارهایی که باید تو سازندا انجام بشه ...
inherited Create(bCreateSuspended);
end;
- سعی می کنید تو Thread، تو یه حالتی که فقط بررسی شرط نباشه (جهت اطمینان)، مقایسه ها رو بصورت یه فلگ Hash شده به Main برگردونید و در یه Case خاص کلیدهای Hash شده بررسی شوند ...
- در پایان کارِتون برای بررسی قفل، یه پیغام توسط به Main میفرستید که کارتون با قفل تموم شده و یا مشکل چی بوده؛ در نهایت هم یه ویندوز پروسیجر (تو این پست توضیحاتی در این مورد عرض کردم) برای پردازش پیامهای رسیده از Threadمیذارید که پیغام فرستاده شده توسط PostMessage رو رسیدگی کنه ...