Ich erstelle eine C # -Dll, die von anderen Entwicklern in WinForms verwendet wird. Aus irgendwelchen Gründen möchte ich feststellen, ob Methoden aus dieser Bibliothek von Main (GUI) Thread aufgerufen werden und Entwickler warnen, dass er so etwas getan hat (zB in einer Log-Datei). Gibt es eine vernünftige Möglichkeit, aufrufende Methode vom Haupt-Thread zu erkennen? Denken Sie daran, ich habe keinen Zugriff auf WinForm-Anwendung.
Eine einfache Lösung in diesem Fall ist das Deklarieren eines statischen Steuerelements in der Bibliotheksbaugruppe, die im Haupt-UI-Thread erstellt wird. Wenn Sie feststellen möchten, ob die Bibliothek vom Hauptthread aufgerufen wird, verwenden Sie das folgende
%Vor%Die einfachste Option (wenn Sie ein handliches Formular / Steuerelement haben) ist, InvokeRequired zu überprüfen.
Wenn nicht, dann könntest du versuchen, SynchronizationContext
zu verwenden, um einen Post oder einen Send zu simulieren und zu überprüfen, auf welchem Thread das passiert? Wenn Sie Senden oder Senden aufrufen, wechseln Sie zum UI-Thread.
Tags und Links .net c# multithreading winforms