我正在使用System.Threading.ThreadPool来管理来自服务的作业队列。我已经执行记录这样的...我可以从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 2009-07-08 02:40:12