2014-02-16 3 views
7

Ich versuche derzeit, Code auszuführen, wenn der Debugger von einem Prozess getrennt wird. Es ist leicht, herauszufinden, ob ein Debugger angeschlossen ist:Ausführen von Code, wenn der C# -Debugger vom Prozess getrennt wird

System.Diagnostics.Debugger.IsAttached; 

Meine Frage ist, ob es einen Weg gibt, (bevorzugt eine, die für .NET arbeitet, Windows Phone, WinRT) ein Ereignis zu erhalten, wenn der Debugger abgelöst wird (meistens wenn die Anwendung beendet wird).

Im schlimmsten Fall kann ich den Debugger-Prozess in .NET finden und abonnieren Sie das Exit-Ereignis, aber das wird nicht in Windows Phone und WinRT funktionieren.

Antwort

2

Wahrscheinlich ist der einfachste Weg, einen Thread zu haben, der den Wert beobachtet. Etwas wie:

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

(geschrieben, aber nicht kompiliert)

+0

Ich hatte Angst, das das einzige Problem war. Nicht das Beste, aber es ist wahrscheinlich das einzige, das wir haben. Vielen Dank! –