PDA

View Full Version : مشکل زمان زیاد لود شدن فورم



babak2000
شنبه 21 فروردین 1389, 15:51 عصر
راستش یه سوال داشتم :

من در یکی از فورمهای برنامه تکست های زیادی بایند می شوند بخاطر همین یه مقدار زمان طول میکشه تا فورم مورد نظر نمایش داده بشه

در اونت (Event ) لود فورم چنتا تابع هست برای بایند کردن تکست ها -- امکانش هست در زمان لود فورم یه تابع اجرا بشود و بقیه توابع بعد از لود (نمایش) فورم اجرا بشوند ؟؟

فکر کنم بادستور Thread میشه یه کارهای انجام داد ولی تا حالا استفاده نکردم اگه

ممکنه راهنمایی بفرمایید

mehdi.mousavi
شنبه 21 فروردین 1389, 16:24 عصر
سلام.
سال نو مبارک (البته دیگه داره یواش یواش کهنه میشه) :)

شما می تونید جای اینکه هر کنترل رو بصورت مجزا Bind کنید که بخواد اطلاعات هر یک با یک بار Query از بانک دریافت و درون کنترل قرار بگیره، یکبار داده ها رو (با استفاده از یک دستور SQL) از RDBMS بگیرید، سپس هر کنترل رو به بخشی از داده مورد نظر Bind کنید. بعبارت دیگه جای اینکه 5 کنترل، بطور مجزا داده ها رو از بانک query کنن، خودتون یکبار اطلاعات رو در 5 Result Set مختلف از بانک دریافت کنید، و سپس هر Result Set رو به Control مورد نظر جداگانه Bind کنید. اینطوری سرعت لود فرم افزایش پیدا خواهد کرد.

روش دیگه استفاده از Cache هستش. برخی اطلاعات، عموما زیاد استفاده میشن و میشه اونها رو در برنامه Cache کرد. در واقع جای اینکه با هر بار باز شدن فرم، اطلاعات رو از بانک دریافت کنید، میتونید در صورت وجود اطلاعات در Cache از اون اطلاعات استفاده کنید. هر وقت داده مورد نظر Dirty شد، اونوقت میتونید Cache رو Purge کنید تا در درخواست بعدی اطلاعات مجددا از بانک گرفته بشه.

استفاده از Thread ها هم، گمان نمیکنم تو این حالت بهتون چندان کمک کنه. در واقع توی این سناریو، بعید میدونم تفاوت چشمگیری حاصل بشه.

ترجیحا، یکی از دو مورد اول رو انتخاب کنید. (Cache کردن اطلاعات به مورد اول هم اولویت داره).

موفق باشید.

majid_vb_2008
شنبه 21 فروردین 1389, 16:28 عصر
منم همين مشكل رو داشتم براي حلش اول برنامه همه فرم هاي برنامه رو يك بار لود مي كنم بعد مي بندم بعد هر جا كه لازم باشه فرم رو لود مي كنم اينجوري ديگه و سط كار برنامه فريز نمي شه
فقط لود اول برنامه يك كند مي شه كه فكر نمي كنم بشه بهش گفت ايراد چون برنامه هاي بزرگ هم لود اوليه سنگيني دارن

babak2000
شنبه 21 فروردین 1389, 18:57 عصر
در مورد کش کردن اطلاعات فایده ای نداره چون کاربران دایما روی رکوردهای مختلف کار میکنند و کمتر مورد تکراری پیش میاید
در مورد Result Set مطالعه میکنم

ولی بیشتر هدف من استفاده از Thread هستش توی یه تاپیک آقای موسوی در مورد Work Thread صحبت کرده بودن که بنظرم خیلی جالب اومد

فورم اصلی برنامه شامل چندین فورم هستش (Tab Control) حالا اطلاعات صفحه دوم و سوم بعدآ بایند بشه زیاد مهم نیست چون کاربر بعد از لود فورم دو یا سه ثانیه طول میکشه تا بخواهد به فورم های دیگه وارد بشه

امیدوارم منظورم را کامل بیان کرده باشم

من میخواهم ابتدا یکی از توابع اجرا بشود و بعد فورم ظاهر بشه و بعد توابع دیگه اجرا بشود