Поставить таймер на выполнение потока - C#
Формулировка задачи:
Здравствуйте.
Есть действие, которое при выполнении может зависнуть.
Мне нужно переступить его, если оно выполняется дольше 3 минут.
Как вариант - поместить действие в отдельный поток и убить его, если время выполнения превышает заданное.
Но я не могу понять как это осуществить.
Пока время не прошло каждую секунду проверять работает ли еще поток, и если более 3х минут убивать поток?
и Как корректно убивать поток из основного?
Решение задачи: «Поставить таймер на выполнение потока»
textual
Листинг программы
public partial class Form1 : Form
{
static Thread myThread;
static System.Windows.Forms.Timer MyTimer;
public Form1()
{
InitializeComponent();
myThread = new Thread(func); //Создаем новый объект потока (Thread)
MyTimer = new System.Windows.Forms.Timer();
MyTimer.Interval = 1000;
MyTimer.Tick += new System.EventHandler(timer1_Tick);
}
static void func()
{
//Какое-то большое и страшное действие
for (int i = 0; i < 10; i++)
{
Thread.Sleep(5000);
}
}
public static void timer1_Tick(object sender, EventArgs e)
{
//Секунда прошла, прерываем поток
myThread.Abort();
MyTimer.Stop();
}
private void button1_Click(object sender, EventArgs e)
{
MyTimer.Start();
myThread.Start(); //запускаем поток
}
}