0
nur eine kleine Frage: Ist es möglich für den Debugger eine Pause zu machen, wenn ein Ereignis ausgelöst wird?Break-Debugger, wann immer Ereignis in Visual Studio ausgelöst wird
Vielen Dank.
nur eine kleine Frage: Ist es möglich für den Debugger eine Pause zu machen, wenn ein Ereignis ausgelöst wird?Break-Debugger, wann immer Ereignis in Visual Studio ausgelöst wird
Vielen Dank.
Sie können einen globalen Handler für alle Ereignisse nicht registrieren, die auf einer Anwendung erhöhen, aber Sie können Ihre eigenen Handler für statische Ereignisse tatsächlich registrieren, mit Hilfe der Reflexion:
public class Program
{
public static void Main(string[] args)
{
MethodInfo handler = typeof(Program).GetMethod("GlobalEventHandler");
IEnumerable<EventInfo> events = AppDomain.CurrentDomain
.GetAssemblies()
.Select(a => a.GetTypes()
.Select(t => t.GetEvents(
BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Static)
.Where(e => typeof(EventHandler)
.IsAssignableFrom(e.EventHandlerType))))
.SelectMany(e => e)
.SelectMany(e => e);
foreach (EventInfo evt in events)
evt.GetAddMethod(true).Invoke(null, new object[]
{
Delegate.CreateDelegate(evt.EventHandlerType, null, handler)
});
}
public static void GlobalEventHandler(object sender, EventArgs args)
{
Debugger.Break(); // <-- When a static event is fired, the application will break here
Console.WriteLine("An event was fired!");
}
Die unterstützten statische Ereignisse sind nicht so viele.
16 tatsächlich:
Welches Ereignis? Abonnieren Sie es, setzen Sie Haltepunkt, voila .. – Sinatr
https://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break(v=vs.110).aspx – apocalypse
Lassen Sie mich erklären: Ich bin im Debugger-Modus. Ich möchte eine Pause, wenn ein vorhandenes Ereignis im Code ausgelöst wird. Ich habe 100000 Zeilen Code mit 200 Ereignissen. Ich möchte nur eine Pause haben, um zu sehen, wann immer ein existierendes Ereignis abfeuert. Ich hoffe, Sie verstehen jetzt. – TheOnionMaster