写了个多线程爬虫,每次取得数据后都向日志文件写入一条信息。但是使用EnterWriteLock之后还是会随机出现 文件被进程占用无法访问的错误。代码如下
/// 将日志信息写入文件 /// </summary> /// <param name="logText">日志信息</param> public void logWirte(string logText) { string threadID = Thread.CurrentThread.ManagedThreadId.ToString(); cacheLock.EnterWriteLock(); try { //判断日志文件的存在 FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read); fs.Close(); fs.Dispose(); StreamWriter sw = new StreamWriter(path, true); sw.WriteLine(DateTime.Now.ToString("hh:mm:ss") + ":线程" + threadID + "-->" + logText); sw.Close(); sw.Dispose(); } finally { cacheLock.ExitWriteLock(); } }
使用Mutex