2016-09-23 3 views
1

Фон: Я запускаю приложение с задачей, которая печатает «задачу + номер» в бесконечном цикле. Я хочу знать, что такое happeingn с задачей, когда я закрываю приложение и как я его вижу.Что происходит с задачей, если я закрываю приложение C#

мой пример, который я использую, чтобы видеть, что задача выполнения:

//delegate to pring text in label 
    private delegate void SetTextToControlDelegate(string text, Control control); 

private void SetTextToControl(string text, Control control) 
{ 
    if (control.InvokeRequired) 
    { 
     SetTextToControlDelegate deleg = 
      new SetTextToControlDelegate(SetTextToControl); 

     this.Invoke(deleg, new object[] { text, control }); 
    } 
    else 
    { 
     control.Text = text; 
    } 
} 

//run a task 
private void Run() 
{ 
    Task.Factory.StartNew(() => 
     { 
      int i = 0; 
      while (true) 
      { 
       Thread.Sleep(1000); 
       i++; 
       string result = "task " + i.ToString(); 
       SetTextToControl(result, label1); 

      } 
     }); 
} 

//button to run task 
private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     Run(); 

    } 
    catch (Exception ex) 
    { 
     SetTextToControl(ex.Message,label1); 
    } 
} 
+0

Я думаю, что если вы закроете все приложение, задача будет убита. – Sebi

+0

Задание убито. Тема принадлежит процессу. –

ответ

2

Ваше заявление - это процесс. Процесс является родителем потоков. Процесс также управляет памятью. Таким образом, потоки (задачи) и их память принадлежат процессу. Если приложение (процесс) закрывается, оно удаляет все его дочерние элементы. Задачи убиты, память освобождается.

2

Задача будет прервана и приложение будет закрыто. Это все.

Код вызова может получить некоторые изменения для очистки, но все зависит от состояния закрытия приложения (сбой или нет).

В качестве примечания: Никогда не используйте Thread.Sleep в формате Task. Это может вызвать взаимоблокировки, если задача выполняется в том же потоке. Используйте await Task.Delay.

Смежные вопросы