I was doing some research inspired by this question and I noticed that several of the proposed solutions to similar problems created a mutex object during initialization of a static variable. Such a mutex will only work as desired if the thread that created it remains alive for the lifetime of the application.
Now it seems a reasonable guess that static variables are initialized by the process main thread, and it also seems a reasonable guess that the process main thread only exits when the main function exits (which is presumably under the control of the programmer).
But are either of these actually guaranteed by the C# language standard?
PS: I'm talking about Windows threads, not .NET threads.