PDA

View Full Version : Static timer



shafagh_82
شنبه 21 آذر 1388, 13:31 عصر
با سلام خدمت دوستان!
من می خواهم از یک Static timer استفاده کنم, نوع آن را استاتیک تعریف کرده ام و مابقی مسایل مثل تیک و .... را مانند تایمر معمولی ست کرده ام ولی برای کار با این تایمر دچار مشکلاتی شده ام. مثلا بعضی مواقع با اینکه مقدار تایمر به درستی ست می شود وارد Event تایمر نمی شود. بعضی مواقع بدون مشکل کار را انجام می دهم ولی احساس می کنم موقعی که تایمر برای اولین بار در برنامه ست میشود درست کار می کند ولی وقتی برای دفعات بعدی ست می شود, دچار مشکل می شود و دیگر وارد تیک آن نمی شود. آیا برای استفاده از نوع استاتیک تایمر بایدکار خاصی انجام دهیم؟
ممنون

sia_2007
شنبه 21 آذر 1388, 18:11 عصر
امکانش هست بیشتر توضیح بدین ؟

saied_genius
شنبه 21 آذر 1388, 19:14 عصر
سلام

شما يک عضو static را فقط از يک متد static مي توانيد تغيير دهيد.

موفق باشيد.

shafagh_82
دوشنبه 23 آذر 1388, 08:06 صبح
سلام! ممنون از جوابتون! یعنی منظورتون اینه که من باید برای تغییر مقدار Interval این تایمر این کار رو در یک متد استاتیک انجام بدم؟

saied_genius
دوشنبه 23 آذر 1388, 10:30 صبح
سلام

بله دوست عزيز
دقيقاً منظورم همين است.

موفق باشيد.

shafagh_82
سه شنبه 24 آذر 1388, 11:09 صبح
سلام!
ممنون از لطف دوستان!
ببینید کدهایی که من برای این تایمر نوشتم به این شکل است:



public class Sms
{
public static Timer ocSaveSmsTimer;
public Sms
{
if (ocSaveSmsTimer == null)
EnableTimer();
}
public static void EnableTimer()
{
try
{
ocSaveSmsTimer = new Timer();
ocSaveSmsTimer.Tick += new EventHandler(ocSaveSmsTimer_Tick);
ocSaveSmsTimer.Interval = 60000;
ocSaveSmsTimer.Start();
}
catch
{
}
}
static void ocSaveSmsTimer_Tick(object sender, EventArgs e)
{


Sms ocSms = newSms();


ocSms.SetTimer();

}





public void SetTimer()
{
ChangeSavetimerInterval(0, false);
int Interval = یک سری محاسبات
ChangeSavetimerInterval(nTimerInterval, true);
}
private static void ChangeSavetimerInterval(int nInterval, bool bStart)
{
if (bStart)
{

ocSaveSmsTimer.Interval = nInterval;

ocSaveSmsTimer.Start();
}
else
{
ocSaveSmsTimer.Stop();
}


}
}// انتهای کلاس اس ام اس







ولی وارد Event نمی شود؟؟؟:گیج: به نظر شما مشکل چیست؟؟ ممنون

shafagh_82
سه شنبه 24 آذر 1388, 12:36 عصر
متشکرم! مشکل حل شد! باید از تایمر کلاس System.timers استفاده می کردم در حالی که برنامه به طور پیش فرض تایمر کلاس System.windows.forms.timer را پیدا کرده و از آن استفاده کرده بود!