J'utilise un System.Threading.ThreadPool pour gérer une file d'attente de travaux à partir d'un service. Je l'ai déjà mis en œuvre l'exploitation forestière comme ça ...Puis-je appeler des méthodes statiques sur une instance de classe statique à partir d'un thread de travail?
abstract class Global
{
public static LogFile LogFile = null;
}
public class LogFile : IDisposable
{
private StreamWriter sw;
public LogFile(string path){}
public void WriteEntry(string logText)
{
lock (sw)
{
sw.WriteLine(logText);
}
}
}
Je veux créer le journal au démarrage du service et de l'utiliser de mes threads de travail .. quelque chose comme la file d'attente ... ce
//On Service Start
Global.LogFile = new LogFile("log.txt");
//Kick of worker thread
ThreadPool.QueueUserWorkItem(objWrkrThread.CallbackMethod, iCount);
//Worker thread logs an entry in CallbackMethod()
Global.LogFile.WriteEntry("Hello World");
Est ce coffre-fort? L'appel d'une méthode sur une instance statique d'une classe va-t-elle par inadvertance «synchroniser» ou «bloquer» mes threads?
Michael
Les méthodes statiques ne sont pas intrinsèquement sûres. S'il vous plaît voir cette réponse par Jon Skeet [http://stackoverflow.com/questions/1090650/are-static-methods-thread-safe/1090670#1090670] – TheVillageIdiot