PDA

View Full Version : سئوال در مورد تایمر



rezamim
سه شنبه 20 شهریور 1386, 08:28 صبح
با سلام
میخواستم بدونم آیا قراردادن تایمر بر روی فرم اصلی برنامه ( فرم اولیه که حاوی منو هست ) برای اینکه مثلا هر 10 دقیقه یک عکس کوچک ( حدود 200 در 200 ) رو نشون بده تا چه حد بر روی سرعت تاثیر میگذاره. آیا اصلا تاثیری میگذاره؟
برای نمایش ساعت چطور ؟ با توجه به فاصله زمانی 1 ثانیه. آیا اصلا برای نمایش ساعت بر روی فرم باید از طریق تایمر عمل کرد و یا روش دیگری هم هست ؟
با تشکر

rezaTavak
سه شنبه 20 شهریور 1386, 09:15 صبح
من همچنین چیزی که شما می فرمایید (ساعت و تقویم) در یکی از فرمهایم که به اسم Desktop است و تقریبا ShortCut برای برنامه ام هست می‌گذارم. فقط یک کلید هم قرار داده ام که اگر کاربر خواست این فرم را ببندد. توی کامپیوتر ۲۳۳ با ویندوز ۹۸ هم بدک نبود. اما سرعت را کمی کند می‌کرد. توی کامپیوترهای جدیدتر هم که مشکل نداشت.

اما در مورد عکس فقط موقع تغییر عکس یکمی جلوی سرعت گرفته میشه اونم توی کامپیوترهای قدیمی ۲۳۳ و... اما در سایر موارد خیالتان راحت باشد.


توصیه اکید این است که هر چه تعداد شی تایمر کمتر باشد بهتر است. به گمانم تعداد ۱۲ عدد حد بالای این مقدار باشد. یعنی اینکه اگر قرار است ۳ کار در ۳ تایمر انجام شود ۳ کار در یک تایمر دارای شرط برای تشخیص عمل مورد نظر انجام گیرد.

گرچه این نکته را هم فراموش نکنید که فراخوانی تایمر هزارم ثانیه است اما ممکن است به علت درگیری پردازنده در موقعی که انتظار دارید فراخوانی انجام نشود بنابراین از عملگر = استفاده نکنید و از < یا > برای بررسی شرط استفاده کنید.

برای تفاوت کار برنامه خود را بدون تایمر و با تایمر اجرا کنید و تغییرات را در taskmgr ببینید.

rezamim
سه شنبه 20 شهریور 1386, 12:24 عصر
بسیار ممنون از پاسختان.

rahro
سه شنبه 20 شهریور 1386, 18:13 عصر
بسیار ممنون از پاسختان.
سلام معمار:
چرا از عکس های gif استفاده نمیکنی؟!! هم سرعت رو کم نمیکنه و هم میتوانی مانور بیشتری برای نمایش بدی:متفکر:

rezamim
چهارشنبه 21 شهریور 1386, 06:36 صبح
چون منظورم فقط نمایش یا عدم نمایش یک عکس نیست
ضمنا عکسها با توجه به موضوعاتی انتخاب و نمایش داده میشوند

rezamim
شنبه 24 شهریور 1386, 14:55 عصر
برنامه من از یک فرم اصلی تشکیل شده ( که حاوی منوی برنامه است ). یک کادر نیم سانتی هم در پایین این فرم قرارداده ام که در این کادر هر 5 دقیقه یکبار چک میشود که اگر کاربر پیغام جدیدی برایش آمده باشد ، یک دایره سبز رنگ نمایش داده شود. اینکار را هم با قرار دادن یک تایمر بر روی فرم اصلی انجام داده ام.
مشکلی که به وجود می آید اینست که فرضا اگر کاربر بر روی فرمی و در حال ورود اطلاعات باشد ، هنگامی که زمان اجرای تایمر فرا میرسد و اجرا میشود ، فوکوس از فرم ورود اطلاعات برداشته میشود.
لطفا راهنمایی بفرمایید. آیا همیشه اینطور است و یا من باید کاری را انجام بدهم که نداده ام.

hamed_m
یک شنبه 25 شهریور 1386, 10:59 صبح
من در نسخه 9 این ایراد رو ندیدم.

ashkan_gorg
یک شنبه 25 شهریور 1386, 11:19 صبح
سلام من هم قبلاٌ همین مشکل را داشتم که حل شد.شما می توانید زمانی که فرم جدید فعال شده تایمر رو در فرم قبل غیرفعال کنید وتا زمانی که فرم جدید را بستید می توانید تایمر را فعال کنید تا بتواند عملیات قبلی را انجام دهد .امیدوارم مشکلتون حل شده باشد.

rezaTavak
یک شنبه 25 شهریور 1386, 13:48 عصر
من هم همچنین مشکلی ندارم.

برنامه من هر ثانیه یکبار انجام می شود.

rezamim
دوشنبه 26 شهریور 1386, 17:17 عصر
سلام من هم قبلاٌ همین مشکل را داشتم که حل شد.شما می توانید زمانی که فرم جدید فعال شده تایمر رو در فرم قبل غیرفعال کنید وتا زمانی که فرم جدید را بستید می توانید تایمر را فعال کنید تا بتواند عملیات قبلی را انجام دهد .امیدوارم مشکلتون حل شده باشد.

دوست عزیز اگه تایمر رو در فرم اصلی غیر فعال کنم که دیگه کاری رو که میخوام برام انجام نمیده:چشمک:

فکر کنم اشکال از اینه که از GIF89.DLL برای نمایش تصویر متحرک استفاده کرده ام. چون در حالتی که از لیبل یا Image استفاده کنم این مشکل پیش نمی آید

ashkan_gorg
سه شنبه 27 شهریور 1386, 11:27 صبح
من منظورم این بوده که شما وقتی فرم جدید رو اجرا کردید دیگه کاری با فرم قبلتون تا خارج نشدن از فرم جدید ندارید و وقتی از فرم جدید خارج شدید تایمر به کار خودش ادامه میده.

rezamim
چهارشنبه 28 شهریور 1386, 08:50 صبح
کاری که من میخوام بکنم مثل وقتی هست که شما مسینجرتون فعاله و دارید توی اینترنت کار میکنید. هر موقع که ایمیلی برای شما میاد اون پایین کادری باز میشه و به شما اعلام میکنه که یک ایمیل برای شما اومده.
فکر میکنید درسته تا وقتی که شما پنجره هاتون بازه این کار غیر فعال باقی بمونه ؟ توی همین مایه ها !
برنامه من طوری هست که مثلا یک بخشی تقاضایی رو ارسال میکنه و کاربری که باید به این تقاضا رسیدگی کنه باید هر جای برنامه که هست و روی هر فرمی که هست ، مطلع بشه که یک تقاضای جدید برای اون رسیده و در اولین فرصت بره و اونو انجام بده .
امیدوارم منظورمو رسونده باشم.

rezaTavak
چهارشنبه 28 شهریور 1386, 09:07 صبح
اضافه کردن یک کنترل به پنجره اصلی مثل toolbar در بالای Message bar چطوره؟ یک دکمه از نوع toolbar و محل پایین پنجره اصلی به نظر من بهترین گزینه می تونه باشه. همیشه روی همه پنجره ها است.

mehran_337
چهارشنبه 28 شهریور 1386, 10:25 صبح
البته راه حل اصلی استفاده از امثال winsock میباشد که در شبکه از پورتها استفاه می کنه و تایمری هم نداره و به محض دریافت دیتا متد getdata فعال می شه . در این متد فرمی رو که از قبل طراحی کردیم برای دریافت مسیج میشه فراخوانی کرد .

نکته : بنده این مسیر را طی کردم اما در هنگام چت دو کاربر مشکل داشتم اما این بخش فوق مشکل نداشتم . مجبور شدم همین روند تایمر رو طی کنم ولی مشکل شما رو نداشتم

rezamim
چهارشنبه 28 شهریور 1386, 16:26 عصر
ممنون از توجه تمامی دوستان
بنظرم میاد که مشکل از همون کنترل نمایش تصاویر متحرک بود ( GIF89.dll ) . چراشو نفهمیدم ولی فوکوس رو از پنجره فعال به پنجره اصلی منتقل میکرد. ولی با استفاده از کنترل تصویر ( Image ) مشکلم حل شد.
باز هم از همه دوستانی که منو راهنمایی کردند ممنونم