PDA

View Full Version : سوال: شي تايمر



XilizaX
یک شنبه 21 تیر 1388, 16:29 عصر
درود ،
امروز داشتم روي عملگر تايمر كار مي كردم متوجه شدم در هر دو حالت تخصيص interval بروي 1 و 10 عكس العمل يكساني از سيستم ديده مي شه ، مي شه يك نفر توضيح بده چرا ؟

ممنون

Mani_rf
یک شنبه 21 تیر 1388, 17:59 عصر
سلام.
شئ تایمر بر مبنای هزارم ثانیه کار می کنه ،‌به زبان ساده تر اگر intervalرا برابر با 1000 قرار دهی ، کدی که در تایمر نوشتی هر یک ثانیه یک بار اجرا خواهد شد و اگر آن را برابر 5000 قرار دهی کد هر 5 ثانیه.
در نتیجه شما هنگام قرار دادن مقدار 1 و 10 تفاوت چندانی احساس نمی کنید.

XilizaX
دوشنبه 22 تیر 1388, 14:44 عصر
سلام.
شئ تایمر بر مبنای هزارم ثانیه کار می کنه ،‌به زبان ساده تر اگر intervalرا برابر با 1000 قرار دهی ، کدی که در تایمر نوشتی هر یک ثانیه یک بار اجرا خواهد شد و اگر آن را برابر 5000 قرار دهی کد هر 5 ثانیه.
در نتیجه شما هنگام قرار دادن مقدار 1 و 10 تفاوت چندانی احساس نمی کنید.


درود.
ماني عزيز از پاسخت ممنونم ولي موضوعي رو كه گفتي مي دونستم.
بزار يه جور ديگه سوال كنم:
تصور كن در رويداد تيك يك تايمر كه داراي interval = 10 است كدي براي جابه جايي يك ليبل روي فرم قرار ميدهيم و درون رويداد تيك يك تايمر ديگر كه داراي interval = 1 است كدي براي حركت يك ليبل ديگر.
حالا وقتي F5 رو مي زنيم بايد ليبل دوم باسرعتي 10 برابر ليبل اول حركت كند پس چرا اينطور نمي شود ؟
:متفکر:

sari-1369
دوشنبه 22 تیر 1388, 14:55 عصر
فکر کنم برای تایمر interval کمتر از 50 همشون 50 به حساب میان . ( مطمعن نیستم )

Mani_rf
دوشنبه 22 تیر 1388, 16:04 عصر
حق با شماست ، من هم این را امتحان کردم و به نتیجه شما رسیدم.
دقیق نمی دانم اما من فکر می کنم که زمان اجرا شدن خط های نوشته شده در داخل بدنه تایمر موجب می شود تا زمان تاخیری که برای تایمر با مقدار 1 نوشته اید برابر با تایمر با مقدار 10 شود و هر دو در یک زمان اجرا شوند.

منصور بزرگمهر
دوشنبه 22 تیر 1388, 16:06 عصر
در وی بی 6 ما یک دستور بنام DoEvents داشتیم، که تضمین انجام حرکت فیزیکی و گرافیکی شی در فرم را می کرد، ولی در دات نت نمی دانم معادل این دستور چیست، و اگر از معادل دستور فوق استفاده کنی مطمناً حرکت لیبل های تو متفاوت خواهد بود.
اگر معادل دستور فوق را نیز یافتی ما را نیز بی خبر نگذار. حتی یک سرچ کن شاید بیابی.

متشکرم - بزرگمهر

Mani_rf
دوشنبه 22 تیر 1388, 16:09 عصر
معادل DoEvents در دات نت Application.DoEvents هست اما این فرمان موجب میشود که در کارهایی که تمام CPU را به خود اختصاص می دهید مانند حلقه Do .. Loop ،‌Cpu آزاد شود و کارهای دیگر را انجام دهد. فکر نمی کنم که در سرعت اجرای Timer تاثیری داشته باشد. شئ Timer از سیستم Treding استفاده می کند.
اما امتحان آن هم ضرری ندارد.

منصور بزرگمهر
دوشنبه 22 تیر 1388, 16:19 عصر
بقول دوستمان Mani_rf دستور فوق Application.DoEvents است، ولی من هم با استفاده از این دستور و حرکت لیبلها امتحان کردم، سرعت آنها دوباره یکی بود، شاید بقول یکی از دوستانمان در بالا موارد زیر 50 میلی ثانیه یکی محسوب می شود.

متشکرم - بزرگمهر

mortezamhd
سه شنبه 23 تیر 1388, 02:16 صبح
فکر کنم برای تایمر interval کمتر از 50 همشون 50 به حساب میان . ( مطمعن نیستم )
من هم از یکی از دوستام این حرفو شنیده بودم و قبولش دارم

m_haghighat
سه شنبه 23 تیر 1388, 02:37 صبح
کوتاه ترین فاصله ی زمانی تولید شده با تایمر 55 میلی ثانیه وبلند ترین آن 65.5 ثانیه است(interval=65535).علت 55 میلی ثانیه هم این است که تایمر از ساعت سیستم استفاده می کند و ساعت سیستم در هر ثانیه کمتر از بیست پالس تولید می کند.

XilizaX
سه شنبه 23 تیر 1388, 14:28 عصر
درود ؛
از همتون ممنونم و تصور مي كنم m_haghighat پاسخ قانع كننده داده است.
موفق باشيد.