是否有杀死Debugger.Launch窗口的复杂方法?

时间:2018-10-03 19:39:37

标签: c# debugging

我有一个运行外部代码的应用程序,每次我出于调试目的启动它时,都不得不将调试器附加到该进程中。 我正在使用Debug.Launch()方法,但是有时我想将该程序附加到当前VS实例,因此无论如何我都需要手动执行。但是,当我附加该进程时,调试器窗口仍然存在,因此我想摆脱它。但是由于该方法无论如何都无法等待,因此我很难杀死它。我已经尝试过这样的事情:

private void CheckForDebugger()
{
    var source = new CancellationTokenSource(TimeSpan.FromSeconds(30));
    var token = source.Token;

    var debuggerTask = Task.Run(() =>
    {
        Debugger.Launch();
    }, token);

    var loopTask = Task.Run(async () =>
    {
        while (!Debugger.IsAttached) await Task.Delay(200);
    }, token);

    Task.WaitAny(debuggerTask, loopTask);
    source.Cancel();
}

但是我没有地方在debuggerTask中插入对该令牌的检查,我试图杀死该任务/线程,但也没有成功。

0 个答案:

没有答案