我有像这样C#静态对象引用
public class FileLogger
{
public FileLogger(string typeOfLog)
{
//implementation
}
public void LogError(string err)
{
//implementation
}
public void LogMessage(string err)
{
//implementation
}
}
一类由于这是记录其输出到文件的应用程序日志类,一个本来期望它是一个静态类。但是,你可以看到它不是。然而,它在这样的应用中使用:
多线程由BugetApplication类的分类方法启动。该类中的任何错误都会触发在BugetApplication类的clsf_handleEvent方法中处理的事件。所以多个线程可以分别触发自己的事件。将创建实例变量作为BugetApplication类中的静态变量在这里有什么作用,或者保持它不静态具有相同的效果?我不希望任何一个线程覆盖另一个线程的错误信息。
编辑 只是为了清楚的事情,只会创建一次的BugetApplication类有一个静态变量'静态FileLogger记录器; '它在构造函数中创建一个实例,并将一些值传递给FileLogger类的构造函数。在BugetApplication类中,有一个方法调用Classification类的分类方法。 Classify方法启动各种线程,并在出现任何错误时触发BugetApplication类中处理的事件,以便此clsf_handleEvent方法可对其进行多次调用。
如果您需要线程同步,那么它是否为'静态' – Spo1ler 2015-03-02 10:53:13
感谢您使用'public BugetApplicationClass()'创建每个BugetApplication实例的新记录器实例。你的意思是'静态BugetApplicationClass()' - 只被调用一次的静态ctor? – 2015-03-02 10:54:34
单身人士如何确保日志和记录器的一个剪切实例? – 2015-03-02 11:06:56