2014-02-16 19 views
7

我正在尝试在调试器从进程分离时运行一些代码。这是很容易找出一个调试器附加:当C#调试器与进程分离时运行代码

​​

我的问题是,如果有一种方法(最好一个,对于.NET的作品,Windows手机,WinRT的)来获取一个事件时,调试器被分离(主要是在应用程序被杀害时)。

最糟糕的情况我可以在.NET中找到调试器Process并订阅Exit事件,但在Windows Phone和WinRT中不起作用。

回答

2

也许最简单的方法是让线程看着价值。喜欢的东西:

public class DebugEventArgs : EventArgs { 
    public bool Attached { get; set; } 
} 
class Watcher { 
    public event EventHandler<DebugEventArgs> DebuggerChanged; 

    public Watcher() { 
     new Thread(() => { 
      while (true) { 
       var last = System.Diagnostics.Debugger.IsAttached; 
       while (last == System.Diagnostics.Debugger.IsAttached) { 
        Thread.Sleep(250); 
       } 
       OnDebuggerChanged(); 
      } 
     }){IsBackground = true}.Start(); 
    } 

    protected void OnDebuggerChanged() { 
     var handler = DebuggerChanged; 
     if (handler != null) handler(this, new DebugEventArgs { Attached = System.Diagnostics.Debugger.IsAttached }); 
    } 
} 

(书面但不编译)

+0

我很害怕,这是唯一的问题。不是最好的,但它可能是我们唯一的一个。谢谢! –

相关问题