Stavo facendo una ricerca ispirata a this question e ho notato che molte delle soluzioni proposte per problemi simili hanno creato un oggetto mutex durante l'inizializzazione di una variabile statica. Tale mutex funzionerà come desiderato se il thread che lo ha creato rimane attivo per tutta la vita dell'applicazione.Le variabili statiche sono inizializzate in un determinato thread?
Ora sembra ragionevole supporre che le variabili statiche siano inizializzate dal thread principale del processo e sembra anche ragionevole supporre che il thread principale del processo esca solo quando si chiude la funzione principale (presumibilmente sotto il controllo del programmatore).
Ma uno di questi è effettivamente garantito dallo standard di linguaggio C#?
PS: sto parlando di thread di Windows, non di thread .NET.
L'assunzione di discussioni non è corretta. Il thread principale può uscire prima che altri thread siano finiti. C'era una domanda a riguardo [qui] (http://stackoverflow.com/questions/31128935/c-sharp-child-thread-is-still-working-even-main-thread-exit). – GolezTrol
@GolezTrol: grazie. Non penso che sia di per sé fatale in questo contesto, perché in questo esempio, il thread principale esce solo perché la funzione principale esce. È sotto il controllo del programmatore, quindi possiamo semplicemente affermare che il programmatore è responsabile di non uscire dalla funzione principale fino a quando non è corretto che il mutex venga rilasciato. Ma lascia ancora la questione se lo standard della lingua assicuri che il thread principale non esca fino a quando la funzione principale non lo fa. (Domanda aggiornata di conseguenza). –