Поток не завершает работу вместе с приложением - C#

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

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

Листинг программы
  1. Thread threadMoving = new Thread(ThreadMoving.DoWork);
  2. threadMoving.IsBackground = true;
  3. threadMoving.Name = "MovingThread";
  4. threadMoving.Start();
  5. ...........................................
  6. public static void DoWork()
  7. {
  8. while (true)
  9. {
  10. if (!Vars.isGSConnected) { Thread.Sleep((int)pause); continue; }
  11. ..............................................................
  12. }
почему-то продолжает работать - точнее спать (Thread.Sleep((int)pause)

Решение задачи: «Поток не завершает работу вместе с приложением»

textual
Листинг программы
  1. using System;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4. using System.Windows.Forms;
  5.  
  6. namespace Jotun
  7. {
  8.     public partial class Form1 : Form
  9.     {
  10.         private CancellationTokenSource mToken;
  11.         private Task mTask;
  12.  
  13.         public Form1()
  14.         {
  15.             InitializeComponent();
  16.  
  17.             this.mToken = new CancellationTokenSource();
  18.             this.mTask = Task.Factory.StartNew(x => this.DoWork((CancellationToken)x), this.mToken.Token, this.mToken.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default);
  19.         }
  20.  
  21.         private void DoWork(CancellationToken cancellationToken)
  22.         {
  23.             while (!cancellationToken.IsCancellationRequested)
  24.             {
  25.                 cancellationToken.WaitHandle.WaitOne(1000); // Sleep
  26.  
  27.                 //cancellationToken.ThrowIfCancellationRequested();
  28.             }
  29.         }
  30.  
  31.         private void Form1_FormClosing(object sender, FormClosingEventArgs e)
  32.         {
  33.             try
  34.             {
  35.                 this.mToken.Cancel();
  36.                 this.mTask.Wait();
  37.             }
  38.             catch (AggregateException)
  39.             {
  40.             }
  41.         }
  42.     }
  43. }

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


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

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

9   голосов , оценка 3.778 из 5

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

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

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