另一程式正在使用此檔案,程序無法訪問

2022-09-08 14:03:15 字數 1109 閱讀 7411

專案中的程式需要自動更新

大概思路

1、通過主程式(判斷是否需要更新)開啟更新程式

2、通過更新程式關閉主程式

4、解壓(新的主程式)

5、開啟主程式

在第五步的時候本機測試沒問題,發布到另一台機子之後總是報錯

另一程式正在使用此檔案,程序無法訪問....

經過一番排查發現問題出在解壓時沒有釋放檔案資源(不知道描述是否準確,另外為什麼本機測試不報錯!)

原解壓**如下:

public static void unzip(string filetoupzip, string zipedfolder, string password)

if (!directory.exists(zipedfolder))

zipinputstream s = null;

zipentry theentry = null;

string filename;

filestream streamwriter = null;

trystreamwriter = file.create(filename);

int size = 2048;

var data = new byte[2048];

while (true)

else}}

}}finally

if (theentry != null)

if (s != null)

gc.collect();

gc.collect(1);}}

修改後**如下:

public static void unzip(string filetoupzip, string zipedfolder, string password)

if (!directory.exists(zipedfolder))

using (zipinputstream zis = new zipinputstream(file.open(filetoupzip, filemode.open)))

}//檔案

else

else}}

}ze = zis.getnextentry();}}

}希望能幫助到遇見類似問題的同學

DelPhi基礎 一 程式框架和檔案結構

delphi中,應用程式的所有相關檔案都被組織在乙個 專案中,每個專案包含的檔案很多,大部分是由delphi 自 動建立並維護的。每乙個delphi應用程式都有乙個擴充套件名為dpr的專案 檔案,是由delphi 自動建立並維護的,一般情況下不必修 改它的內容 預設生成的專案原始檔 如下 progr...

VB程式怎麼判斷另乙個程式是否正在執行

用findwindows函式查詢 private declare function findwindow lib user32 alias findwindowa byval lpclassname as string,byval lpwindowname as string as long pri...

無法刪除文件片段,檔案正在被另乙個人或程式使用?

1 重啟或登出刪除試試 2 xp系統以管理員身份登入刪除試試,或關閉系統還原,再刪 3 進入安全模式或用啟動軟盤 光碟 啟動進入純dos刪除 4 用瑞星卡卡或360的檔案粉碎試試 5 如果是刪除資料夾,從裡往外刪,即先進入該資料夾,刪除裡面所有內容,然後再返回上一層目錄,刪除該資料夾 6 對於大檔案...