Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当C#调试器从进程分离时运行代码_C#_Debugging_Windows Runtime_Windows Phone - Fatal编程技术网

当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});
}
}

(书面但未汇编)

我担心这是唯一的问题。不是最好的,但它可能是我们唯一的一个。谢谢