PDA

View Full Version : مشکل در تایمر معکوس



setareh2013
سه شنبه 09 مهر 1392, 13:12 عصر
با سلام
من برای تایمر معکوس از کدهای زیر استفاده کردم :
<asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Timer ID="Timer1" runat="server" Interval="60000" ontick="Timer1_Tick"> </asp:Timer> <br />
<asp:Label ID="Label1" runat="server" Text="2"></asp:Label> </ContentTemplate> </asp:UpdatePanel>

و کد :
protected void Timer1_Tick(object sender, EventArgs e)
{
int count=int.Parse(Label1.Text);
if (count != 0)
Label1.Text = (count - 1).ToString();
else
{
Label2.Text = "وفت تمام شد";
}
}
ولی این تایمر فقط دقیقه رو نشون میده ثانیه رو نشون نمیده
باید چه کار کنم که مثل شکل زیر باشه ؟
111365

aminireza65
سه شنبه 09 مهر 1392, 13:40 عصر
از کد زیر استفاده کن:
int sec = int.Parse(Label1.Text);
if (sec > 0)
Label1.Text = (sec - 1).ToString();
else if(sec==0)
{
int min = int.Parse(Label2.Text);
if (min > 0)
{
Label2.Text = (min - 1).ToString();
Label1.Text = "59";
}
else
Timer1.Enabled = false;

}

setareh2013
سه شنبه 09 مهر 1392, 15:04 عصر
کد رو به این صورت نوشتم فرقی نکرد
protected void Timer1_Tick(object sender, EventArgs e)
{
int sec = int.Parse(Label1.Text);
if (sec > 0)
Label1.Text = (sec - 1).ToString();
else if (sec == 0)
{
int min = int.Parse(Label2.Text);
if (min > 0)
{
Label2.Text = (min - 1).ToString();
Label1.Text = "59";
}
else
Timer1.Enabled = false;
}
}

aminireza65
سه شنبه 09 مهر 1392, 16:07 عصر
راستی یادم رفت بگم interval رو برای تایمر 500 کن

setareh2013
سه شنبه 09 مهر 1392, 19:50 عصر
راستی یادم رفت بگم interval رو برای تایمر 500 کن

interval چی هست ؟

aminireza65
سه شنبه 09 مهر 1392, 19:52 عصر
interval یکی از خصوصیات تایمره که مشخص میکنه که دستوراتی که توی timer_tick نوشتی هر چند میلی ثانیه یک بار اجرا شه

setareh2013
چهارشنبه 10 مهر 1392, 08:02 صبح
من این کد رو نوشتم
protectedvoid Timer1_Tick(object sender, EventArgs e)
{
int count=int.Parse(Label1.Text);
if (count != 0)
Label1.Text = (count - 1).ToString();
else
{
Label2.Text = "وفت تمام شد";
}
}

زمان یکی یکی کم میشه تا به صفر برسه ولی وقتی صفر میشه پیام وقت تمام شد رو نشون نمیده
نمی دونین دلیلش چیه ؟

aminireza65
چهارشنبه 10 مهر 1392, 10:38 صبح
باید زمانی که count با صفر برابر شد تایمر رو غیر فعال کنی
timer1.enable=false
اگه این کار رو نکنی تایمر کماکان میشماره و از صفر رد میشه پایین و منفی میشه

setareh2013
پنج شنبه 11 مهر 1392, 08:10 صبح
این کدو نوشتم
int count=int.Parse(Label1.Text);
if (count != 0)
Label1.Text = (count - 1).ToString();
if (count == 0)
{
Timer1.Enabled = false;
Label1.Text = "وقت تمام شد";
}
پیام وقت تمام شد رو نمایش داد ولی مشکل اینه که وقتی label1 زمان 0 رو نشون میده یک دقیقه طول میکشه تا پیام بده وقت تمام شد . چه کار کنم که این طوری نشه وبه محض اینکه صفر شد پیام بدهد .

aminireza65
پنج شنبه 11 مهر 1392, 16:57 عصر
111458
مشکله تو فقط با یه sample حل میشه
شما interval رو هنوز نگرفتی چیه
بر حسب میلی ثانیه باید بهش مقدار بدی
یعنی مثلا هر چند میلی ثانیه کد رو یکبار اجرا کنه
خوب وقتی که میگی یک دقیقه طول میکشه تا پیام رو چاپ کنه، interval رو بیار پایین دیگه
مشکل شما اینه که وقتی که متغیر بررسی میشه، مثلا یکه،یه دونه ازش کم میکنه و میشه صفر.
بعد برای اینکه متغیر بررسی بشه که آیا صفر شده یا نه که در این صورت تایمر غیر فعال بشه، باید تایمر یه تیک دیگه بخوره دیگه.
به خاطر همین چون interval رو بالا گرفتی طول میکشه تا پیغام رو چاپ کنه.
من تو این مثال interval رو 500 گرفتم
یعنی هر 500 میلی ثانیه یکبار کد رو اجرا میکنه
ببین اگه متوجه نشدی بگو

setareh2013
پنج شنبه 11 مهر 1392, 18:08 عصر
دستتون درد نکنه .
مشکل حل شد فقط مشکلی که هست ، ثانیه ی این تایمر خیلی تند حرکت می کنه قبل از اینکه یک دقیقه واقعی تموم بشه این تایمر یک دقیقشو تموم میکنه .

aminireza65
پنج شنبه 11 مهر 1392, 19:31 عصر
عزیزم
شما با کم و زیاد کردن مقدار interval میتونی مشکلت رو حل کنی
مقدار interval رو هر چی زیاد تر کنی ثانیه ها یواشتر میرن
هر چی کمتر باشه ثانیه ها تند تر میزنن

setareh2013
پنج شنبه 11 مهر 1392, 23:25 عصر
عزیزم
شما با کم و زیاد کردن مقدار interval میتونی مشکلت رو حل کنی
مقدار interval رو هر چی زیاد تر کنی ثانیه ها یواشتر میرن
هر چی کمتر باشه ثانیه ها تند تر میزنن

مقدار استاندارد و صحیح اون چقدر باید باشه ؟

General-Xenon
جمعه 12 مهر 1392, 02:48 صبح
مقدار استاندارد و صحیح اون چقدر باید باشه ؟

مقدار 1000 رو قرار بدید

setareh2013
جمعه 12 مهر 1392, 19:43 عصر
1000 گذاشتم از زمان واقعی یک ثانیه در دقیقه عقب می افتد .

General-Xenon
جمعه 12 مهر 1392, 21:08 عصر
1000 گذاشتم از زمان واقعی یک ثانیه در دقیقه عقب می افتد .

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