简体   繁体   中英

Detecting running in Main Thread in C# library

I'm creating a C# dll, which is going to be used by others developers in WinForms. For some reasons, I want to detect, if methods from this library, are called from Main (GUI) Thread and warn developer he has done such a thing (ie. in log file). Is there any reasonable way to detect calling method from main thread? Remember I have no access to WinForm application.

An easy solution in this case is to declare a static control in the library assembly that is created on the Main UI thread. If you want to detect if the library is called from the main thread, then use the following

if (MyLibraryControl.InvokeRequired)
  //do your thing here

The simplest option (if you have a form/control handy) is to check InvokeRequired.

In the absence if that, you could try using SynchronizationContext to simulate a Post or Send, checking what thread that happens on? Calling Send or Post will switch to the UI thread.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM