Detecting running in Main Thread in C# library

10,529

Solution 1

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

Solution 2

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.

Share:
10,529
stachu
Author by

stachu

Updated on June 07, 2022

Comments

  • stachu
    stachu almost 2 years

    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.