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