2014-02-16 46 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

我很害怕,這是唯一的問題。不是最好的,但它可能是我們唯一的一個。謝謝! –

相關問題