如果我关闭应用程序C#,任务会发生什么

本文关键字:任务 什么 应用程序 如果 | 更新日期: 2023-09-27 18:08:22

背景:我运行了一个带有任务的应用程序,该任务在无限循环中打印"任务+数字"。我想知道当我关闭应用程序时任务发生了什么,以及我是如何看待它的。

我的例子,我用它来查看运行任务:

//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);
    }
}

如果我关闭应用程序C#,任务会发生什么

您的应用程序是一个进程。进程是线程的父级。进程还管理内存。所以,线程(任务(及其内存属于进程。如果应用程序(进程(关闭,它将删除其所有子级。任务被终止,内存被释放。

任务将中止,应用程序将关闭。仅此而已。

调用代码可能需要清理一些更改,但这一切都取决于应用程序的关闭状态(它是否崩溃(。

附带说明:切勿在Task中使用Thread.Sleep。如果任务在同一个线程上执行,可能会导致死锁。使用await Task.Delay