为什么Environment.Exit导致LINQPad终止

时间:2014-10-02 07:25:03

标签: c# linqpad

我正在Environment.Exit(0);调试包含LINQPad的程序。

当此行Environment.Exit(0);点击时,LINQPad会退出。

  1. 为什么会这样? (在Visual Studio中,显然只是进程终止)。
  2. 有没有办法在不更改原始来源的情况下阻止此行为?
  3. 简单示例:

    void Main()
    {
        Environment.Exit(0);
    }
    

2 个答案:

答案 0 :(得分:8)

这是因为LINQPad在与自身相同的进程中执行查询,通过应用程序域隔离查询而不是处理。

这已经改变in the latest beta:LINQPad现在在自己的进程中运行每个查询。这是为即将到来的集成调试器做准备(无法调试您自己的进程)。一个令人愉快的副作用是调用Environment.Exit(或抛出StackOverflowException)不再崩溃主机进程。

答案 1 :(得分:4)

LINQPad在其自己的进程的异步线程中执行代码(不锁定UI),因此当您运行诸如Environment.Exit之类的指令时,托管进程(因此Linqpad本身)也会受到影响。

您可以通过运行一个进行一些计算的长程序来轻松检查:任务管理器中没有新进程,并且linqpad进程CPU使用率根据计算而提高。

例如,您可以在与应用程序域相关的高级选项中调整一些内容,但AFAIK无法避免此行为,因为Linqpad完全依赖于这种方式来执行代码。