gpt4 book ai didi

c# - 如何处理控制台应用程序关闭

转载 作者:行者123 更新时间:2023-11-30 17:40:14 25 4
gpt4 key购买 nike

<分区>

我们确实有控制台应用程序:

namespace MyApplication
{

public void Main()
{
try
{
AppDomain.CurrentDomain.ProcessExit += (sender, eventArgs) => Stop();

Start();
Console.ReadLine();
}
finally
{
Close();
}
}

public void Start()
{
//...
}

public void Stop()
{
//...
}
}

因此,如果应用程序正确停止(通过在控制台窗口中按 Enter),Close() 方法将从 finally 调用AppDomain.CurrentDomain.ProcessExit

但是当应用程序被关闭按钮关闭或从任务管理器终止时,根本不会调用Close()方法。

问题是:

  1. 为什么 finally block 不起作用?
  2. 如何通过关闭按钮处理控制台关闭?

UPD甚至对象的析构函数都没有被调用:

public class Watcher
{
Action _start;
Action _stop;
public Watcher(Action start, Action stop)
{
_start = start;
_stop = stop;
}

~Watcher()
{
_stop();
}

public void Start()
{
_start();
}
}

// And using as:
var w = new Watcher(Start, Stop);
w.Start();

没有调用析构函数!

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com