「watcher」c# filesystemwatcher 監控文件是否寫完
程序是這樣的,它通過filesystemwatcher監控一個A資料夾的.jpg 文件,如果有新文件則傳到伺服器的B資料夾。 測試的時候把比較大的文件拷貝到A資料夾時會發生錯誤,因為該文件正被其他進程占用。我使用一個隊列去保存這些大文件,即如果大文件進入A資料夾,則程序會發生異常,在catch塊把這些發生異常的圖片路徑放到隊列里,使用timer去定時上傳這些文件。 現在發現一個新問題,A文件主要用來存放採集卡採集回來的圖片,這些圖片是先建立個空的jpg 文件,然後不斷寫入流。並且這些文件在複製時不會出現正在被其他文件占用的錯誤。所以在filesystemwatcher監控的時候經常把0KB的空文件上傳到伺服器。我已經把監控的類型設定為監控文件名或最後一次打開文件時間或屬性改變或大小改變等,所有的監控類型都搭配試過了,但是還是不能解決上傳0KB文件的問題。 誰能給個解決辦法,感激不盡!
聲明:青鳥問答所有作品(圖文、音視頻)均由用戶自行上傳分享,僅供網友學習交流。
如內容如侵犯了您的權益,請聯繫本站進行刪除!
如若轉載,請註明出處:http://www.6dcc.com/b/s89x7h17fx.html
NotifyFilters.LastAccess | NotifyFilters.LastWrite| NotifyFilters.FileName | NotifyFilters.DirectoryName;
奇了怪了,怎麼處理了兩次????
你自己寫的代碼要自己去看,網上那麼多人說是filesystemwatcher問題,看看到底是哪裡問題,對於文件名的changed確實是改變了三次啊,改變了FileName的時候,肯定也改變了LastAccess,有人還發現處理了三次呢,為什麼???他監控下載資料夾,下載文件是創建了,然後改名創建,LastWrite也包括了,觸發changed三次!DirectoryName這個東西是沒用的,只能觸發一次,後面就拜拜,因為你的代碼檢測他啊,他改變一次,filesystemwatcher在原來的路徑就找不到他了,又要重新發現文件,這時候的文件名你已經改了。
所以我上面說那麼多,就會引來後面的問題,系統會溢出奔潰,其實這個控制項是個異步控制項,正在裡面使用控制項要委託,避免跨線程檢查;方法使用try,catch機制會跳轉,沒有cacth到,就跳了;一連執行三次一樣的方法去操作文件,有可能第一次把文件刪除了,第二次交叉執行又去使用文件路徑,你說找不到路徑的System.IO類型操作是不是系統溢出,這樣就會奔潰。
這個控制項還有一個小問題,你要注意framework版本,是否認識NotifyFilters.LastWrite
其他類似問題
filesystemwatcher組件事件不觸發
2017-12-01c#中怎樣去掉小數點和小數點末尾的0,但是不能去掉整數後面的0
2011-03-23如何將字符串中的數字提取出來
2017-05-26求助,問一個簡單的字符串問題
2017-05-27如何把字符串轉換成用字符串顯示的字符類型 求幫助
2017-05-21如何用cout格式化輸出字符串
2017-05-21將兩個字符串分別排序後合併為新的字符串,怎麼編程
2017-05-21switch中怎麼使用字符串進行分支比較
2017-05-19請教如何查找字符串中某字符的出現次數
2017-05-19如何獲取一個字符串的pixel長度
2017-05-19java字符串轉換為十六進位數組
2017-05-19這是多線程嗎? class Demo implements Runnable { private
2014-10-17怎麼把字符串轉成NSNumber類型
2017-05-19怎麼找出兩個字符串中最長的相同子串
2017-05-19