我有像這樣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