7
我正在嘗試在調試器從進程分離時運行一些代碼。這是很容易找出一個調試器附加:當C#調試器與進程分離時運行代碼
我的問題是,如果有一種方法(最好一個,對於.NET的作品,Windows手機,WinRT的)來獲取一個事件時,調試器被分離(主要是在應用程序被殺害時)。
最糟糕的情況我可以在.NET中找到調試器Process並訂閱Exit事件,但在Windows Phone和WinRT中不起作用。
我正在嘗試在調試器從進程分離時運行一些代碼。這是很容易找出一個調試器附加:當C#調試器與進程分離時運行代碼
我的問題是,如果有一種方法(最好一個,對於.NET的作品,Windows手機,WinRT的)來獲取一個事件時,調試器被分離(主要是在應用程序被殺害時)。
最糟糕的情況我可以在.NET中找到調試器Process並訂閱Exit事件,但在Windows Phone和WinRT中不起作用。
也許最簡單的方法是讓線程看着價值。喜歡的東西:
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 });
}
}
(書面但不編譯)
我很害怕,這是唯一的問題。不是最好的,但它可能是我們唯一的一個。謝謝! –