当C#调试器从进程分离时运行代码
当调试器从进程分离时,我正在尝试运行一些代码。很容易发现是否附加了调试器:当C#调试器从进程分离时运行代码,c#,debugging,windows-runtime,windows-phone,C#,Debugging,Windows Runtime,Windows Phone,当调试器从进程分离时,我正在尝试运行一些代码。很容易发现是否附加了调试器: System.Diagnostics.Debugger.IsAttached; 我的问题是,是否有一种方法(最好是适用于.NET、Windows Phone和WinRT的方法)在调试器分离时(主要是在应用程序被终止时)获取事件 最糟糕的情况是,我可以在.NET中找到调试器进程并订阅退出事件,但这在Windows Phone和WinRT中不起作用。最简单的方法可能是让线程监视该值。比如: public class Deb
System.Diagnostics.Debugger.IsAttached;
我的问题是,是否有一种方法(最好是适用于.NET、Windows Phone和WinRT的方法)在调试器分离时(主要是在应用程序被终止时)获取事件
最糟糕的情况是,我可以在.NET中找到调试器进程并订阅退出事件,但这在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 });
}
}
public类DebugEventArgs:EventArgs{
公共bool附加{get;set;}
}
班级观察者{
公共事件事件处理程序调试程序已更改;
公众观察者(){
新线程(()=>{
while(true){
var last=System.Diagnostics.Debugger.IsAttached;
while(last==System.Diagnostics.Debugger.IsAttached){
睡眠(250);
}
OnDebuggerChanged();
}
}){IsBackground=true}.Start();
}
受保护的无效OnDebuggerChanged(){
var handler=DebuggerChanged;
if(handler!=null)handler(这是新的DebugEventArgs{Attached=System.Diagnostics.Debugger.IsAttached});
}
}
(书面但未汇编)我担心这是唯一的问题。不是最好的,但它可能是我们唯一的一个。谢谢