私はSystem.Threading.ThreadPoolを使用して、サービスのジョブのキューを管理しています。 Iすでにこのようにロギングを実装しています...Workerスレッドから静的クラスインスタンスの静的メソッドを呼び出すことはできますか?
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);
}
}
}
私は、サービスの起動時にログを作成し、私のキューに入れられたワーカースレッドからそれを使用したい...このような何か...
//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");
はですこの金庫?クラスの静的インスタンスでメソッドを呼び出すと、誤ってスレッドを「同期」または「ブロック」することはありますか?
マイケル
静的メソッドは、本質的にスレッドセーフではありません。この回答を見るJon Skeet [http://stackoverflow.com/questions/1090650/are-static-methods-thread-safe/1090670#1090670] – TheVillageIdiot