2011-05-23 51 views
1

我有一個在ASP.NET應用程序中使用的單例記錄器。有時候我在這一行The process cannot access the file錯誤:該進程無法訪問文件'C: inetpub wwwroot MyApp 5-23-2011.log',因爲它正在被另一個進程使用。

StreamWriter sw = new StreamWriter("Path to log file", true); 

我通過Process Explorer檢查文件句柄和w3wp.exe擁有手柄,似乎來自同一過程的不同的線程導致的問題。

我已經在上面的代碼中使用了一個lock,但仍然出現錯誤。 如何確保所有線程都可以安全地使用相同的流?

+0

你在鎖定什麼?請添加包含鎖定語句的行。 – 2011-05-23 03:19:53

+1

爲什麼不直接用現有的日誌庫去解決這些問題呢?有log4net,elmah,MS企業日誌應用程序塊... – nickytonline 2011-05-23 03:22:39

+0

我創建了一個新問題,並在其下添加了完整源代碼:http://stackoverflow.com/questions/6092543/singleton-compact-logger-for-asp-網絡應用程序 – Xaqron 2011-05-23 03:28:46

回答

0

不要多次打開日誌文件;只需在應用程序啓動時打開它,在退出時關閉它(並經常刷新)。打開和關閉不止一次效率不高。

相關問題