Ich verwende ein System.Threading.ThreadPool, um eine Warteschlange von Jobs von einem Dienst zu verwalten. Ich habe bereits umgesetzt wie diese Anmeldung ...Kann ich statische Methoden für eine statische Klasseninstanz von einem Worker-Thread aufrufen?
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);
}
}
}
ich das Protokoll bei Dienststart erstellen möchten, und verwenden Sie es aus meiner Warteschlange Worker-Threads .. so etwas wie dieses ...
//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");
Ist das sicher? Wird das Aufrufen einer Methode für eine statische Instanz einer Klasse versehentlich meine Threads "synchronisieren" oder "blockieren"?
Michael
Die statischen Methoden sind nicht von Natur aus threadsicher. Bitte sehen Sie diese Antwort von Jon Skeet [http://stackoverflow.com/questions/1090650/are-static-methods-thread-safe/1090670#1090670] – TheVillageIdiot