Поставить таймер на выполнение потока - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть действие, которое при выполнении может зависнуть. Мне нужно переступить его, если оно выполняется дольше 3 минут. Как вариант - поместить действие в отдельный поток и убить его, если время выполнения превышает заданное. Но я не могу понять как это осуществить. Пока время не прошло каждую секунду проверять работает ли еще поток, и если более 3х минут убивать поток? и Как корректно убивать поток из основного?

Решение задачи: «Поставить таймер на выполнение потока»

textual
Листинг программы
  1. public partial class Form1 : Form
  2.     {
  3.         static Thread myThread;
  4.         static System.Windows.Forms.Timer MyTimer;
  5.  
  6.         public Form1()
  7.         {
  8.             InitializeComponent();
  9.             myThread = new Thread(func); //Создаем новый объект потока (Thread)
  10.             MyTimer = new System.Windows.Forms.Timer();
  11.             MyTimer.Interval = 1000;
  12.             MyTimer.Tick += new System.EventHandler(timer1_Tick);
  13.         }
  14.  
  15.         static void func()
  16.         {
  17.             //Какое-то большое и страшное действие
  18.             for (int i = 0; i < 10; i++)
  19.             {
  20.                 Thread.Sleep(5000);
  21.             }
  22.         }
  23.  
  24.  
  25.         public static void timer1_Tick(object sender, EventArgs e)
  26.         {
  27.             //Секунда прошла, прерываем поток
  28.             myThread.Abort();
  29.             MyTimer.Stop();
  30.         }
  31.  
  32.         private void button1_Click(object sender, EventArgs e)
  33.         {
  34.             MyTimer.Start();
  35.             myThread.Start(); //запускаем поток
  36.         }
  37.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы