PDA

View Full Version : شروع timer پس از اتمام کار یک Thread



sara_aryanfar
جمعه 01 دی 1391, 12:23 عصر
با سلام خدمت دوستان من در ابتدا از Thread استفاده کرده بودم که با اد کردن ایتم در لیست ویو مشکل داشتم بعد اومدم با delegate برنامه رو پیاده کردم حالا من مشکلی که دارم اینه که نیاز دارم یک تایمر رو پس از پایان کار تابعی که به delegate سپردم استارت کنم اما تایمر استارت نمیشه به چه نحوی باید انجام بدم ممنون

afshin_1989
جمعه 01 دی 1391, 13:25 عصر
کدت را بزار

Mahmoud.Afrad
شنبه 02 دی 1391, 02:46 صبح
تایمر هم یک کنترل هست و شما برای دسترسی به تایمری که در یک ترد دیگر تعریف شده بایستی از دلیگیت استفاده کنید(مثل کنترلهای دیگه).
یک متد برای ران کردن تایمر بنویسید. میتونید مقدار interval رو به عنوان پارامتر به این متد پاس بدید. یک دلیگیت تعریف کرده و اون رو با مقدار زمان tick در انتهای متدی که در ترد اجرا میشه اجرا کنید:

private void button21_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(myMethod));
t.Start();
}
void myMethod()
{
// ...

timerDel = new StartTimerDelegate(startTimer);
this.Invoke(timerDel, 5000); // 5000 is timer interval
}

delegate void StartTimerDelegate(int interval);
StartTimerDelegate timerDel;
void startTimer(int i)
{
this.timer1.Interval = i;
this.timer1.Start();
}