none
如何 Synchronize 一個靜態的方法 ? RRS feed

  • 一般討論

  • Code Snippet

    Public Shared Sub logToFile(...)
       ...

     Using logfile As TextWriter = File.AppendText(pathFile)
         SyncLock logfile
             logfile.WriteLine(logMsg)
             If logException IsNot Nothing Then
                 logfile.WriteLine(getExceptionString(logException))
             End If
             logfile.Close()
         End SyncLock
     End Using

    End Sub

     

    我在程式中已經加了 SyncLock logfile, 但還是
      出現下面的錯誤, 有辦法可以直接 Synchronize 一個方法,

    或是 SyncLock 一個程式區塊嗎?

    -----------------------------------
    由於另一個處理序正在使用檔案 'C:\Program Files\...\log\0706.log',所以無法存取該檔案。

     

    我後來又改寫成

     

    Code Snippet
    Using logfile As TextWriter = TextWriter.Synchronized(File.AppendText(pathFile))
             logfile.WriteLine(logMsg)
             If logException IsNot Nothing Then
                 logfile.WriteLine(getExceptionString(logException))
             End If
             logfile.Close()
     End Using

     

    不過還是一模一樣的錯誤 ?????

    -----------------------------------
    System.IO.IOException: 由於另一個處理序正在使用檔案 'C:\Program Files\...\log\0706.log',所以無法存取該檔案。
       於 Sporton.Util.clsLogger.logToFile(String logCaller, String pathFile, String logMsg, Exception logException, Boolean isEncode, FileMode fileMode)
       於 Sporton.Lab.lmLabMonitorComm.log2File(LOGMODE logLevel, String logMsg, Exception logException)
       於 LabMonitorClient.ProcessTimer_Tick(Object sender, EventArgs e)
       於 LabMonitorClient.TimerThread_Tick()

     

    還是不行耶, 只是現在狀況好一些了, 每天發生個1, 2次。

    2007年6月7日 上午 01:13