我正在尝试在调试器从进程中分离时运行一些代码。很容易找出是否附加了调试器:
System.Diagnostics.Debugger.IsAttached;
我的问题是,如果有一种方法(最好是适用于.NET,Windows Phone,WinRT的方法)在调试器分离时(主要是在应用程序被杀死时)获取事件。
最糟糕的情况我可以在.NET中找到调试器进程并订阅Exit事件,但这在Windows Phone和WinRT中不起作用。
答案 0 :(得分: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 });
}
}
(已编写但未编译)