Поставить таймер на выполнение потока - 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(); //запускаем поток } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д