亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

寫文件被另一個進程占用問題

寫文件被另一個進程占用問題

慕標琳琳 2018-12-06 23:51:48
請問下面代碼有什么問題嗎?我每30秒執行一次該方法,提示被另一個進程占用 private?void?WriteRequestLog(Dictionary?loginLogDic) ????????{?????????????? ????????????StringBuilder?logStrBuilder?=?new?StringBuilder(); ????????????foreach?(var?d?in?loginLogDic) ????????????{ ????????????????logStrBuilder.Append(string.Format("{0};{1}",?d.Key.ToString(),?d.Value.ToString("yyyy-MM-dd?HH:mm:ss.fff"))); ????????????????logStrBuilder.Append("\r\n"); ????????????} ????????????lock?(syncFileObj) ????????????{ ????????????????string?reqLogFile?=?string.Format("{0}\\RequestLog_{1}.txt",?RequestLogDirectory,?MachineName); ????????????????if?(File.Exists(reqLogFile)) ????????????????????File.Delete(reqLogFile); ????????????????using?(StreamWriter?sw?=?new?StreamWriter(reqLogFile,false)) ????????????????{ ????????????????????sw.WriteLine(logStrBuilder.ToString()); ????????????????} ????????????}??????????? ????????}
查看完整描述

14 回答

?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

找到原因了,是因為開啟了web園,造成多個工作進程同時寫一個文件
查看完整回答
反對 回復 2018-12-09
?
MM們

TA貢獻1886條經驗 獲得超2個贊

沒什么問題,你應該看看文件到底被誰占用了。
查看完整回答
反對 回復 2018-12-09
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

lock?(syncFileObj) 是否有問題,鎖得住否
查看完整回答
反對 回復 2018-12-09
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

這個應該鎖得住,因為該對象是一個單例類中的成員變量
查看完整回答
反對 回復 2018-12-09
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

@Brave.Y:? 那就是 其它地方 使用到這個文件了,檢查一下
查看完整回答
反對 回復 2018-12-09
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

是不是文件被占用???可能是刪除文件操作有些延遲,而你執行寫入又過于頻繁??梢赃@樣不,不刪除文件每次打開存在的文件就使用FileMode.Truncate清空。代碼如下 String path=""; FileMode fileMode=FileMode.Truncate; if(!File.Exists(path)) fileMode=FileMode.Create; using (FileStream fs = new FileStream("path", fileMode, FileAccess.Write)) { using (StreamWriter sw = new StreamWriter(fs)) { sw.WriteLine("123"); sw.Flush(); } }
查看完整回答
反對 回復 2018-12-09
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

光這段代碼感覺沒有什么問題,如果你這個問題很容易復現的話,在出現異常的時候把程序暫停住,用一些外部工具查看這個文件是否被其它進程打開了,微軟的ProcessExplorer,win7的任務管理器,unlocker等都有這個功能。 PS:如果用工具查看到打開該文件的是你自己的程序進程,則說明你自己在其它地方打開了這個文件,那就是你的代碼邏輯有問題了。
查看完整回答
反對 回復 2018-12-09
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

有什么工具可以看到哪個進程占用了文件嗎?
查看完整回答
反對 回復 2018-12-09
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

@Brave.Y: 工具名稱“who lock me”
查看完整回答
反對 回復 2018-12-09
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

是不是你的文件的操作沒有dispose 或者你干脆找到進程,kill
查看完整回答
反對 回復 2018-12-09
?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

本地跑沒有問題,放到服務器跑的時候,不知道被什么進程占用,因為沒辦法登陸到服務器,所以不知道怎么搞了。
查看完整回答
反對 回復 2018-12-09
?
手掌心

TA貢獻1942條經驗 獲得超3個贊

sw.Flush(); sw.Close();
查看完整回答
反對 回復 2018-12-09
  • 14 回答
  • 0 關注
  • 868 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號