PDA

View Full Version : سوال: چرا این تایمر تا عدد 41 می شمارد.



water_lily_2012
چهارشنبه 10 مهر 1392, 12:31 عصر
سلام
یک سرویس نوشتم که یک تایمر داره ولی نمی دونم چرا تا 41 خط در فایل می نویسه و تموم میشه. خواهشا کمک کنید.


class TimerExampleState
{
public int counter = 0;
}
TimerExampleState s = new TimerExampleState();
public Service1()
{
InitializeComponent();
}

protected override void OnStart(string[] args)
{
TimerCallback timerDelegate = new TimerCallback(CheckStatus);
Timer timer = new Timer(timerDelegate, s, 10000, 1000);
}

private void CheckStatus(Object state)
{
using (StreamWriter writer = new StreamWriter("C:\\WindowsService.txt", true))
{
writer.WriteLine(DateTime.Now.ToString() +" "+s.counter++);
}
}


تشکر

مهرداد صفا
چهارشنبه 10 مهر 1392, 12:38 عصر
با سلام.
به دلیل اینکه Timer رو داخل متود تعریف کردید که با پایان متود، این متغیر Out of scope می شود و توسط GC حذف خواهد شد.
خارج از روال متغیر را تعریف کنید.