对于您面临的问题,只有解决方法。
开始复制之前,请检查文件ID是否正在处理中。您可以调用以下函数,直到获得False值为止。
第一种方法,直接从此 答案复制:
private bool IsFileLocked(FileInfo file){ FileStream stream = null; try { stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None); } catch (IOException) { //the file is unavailable because it is: //still being written to //or being processed by another thread //or does not exist (has already been processed) return true; } finally { if (stream != null) stream.Close(); } //file is not locked return false;}第二种方法:
const int ERROR_SHARING_VIOLATION = 32;const int ERROR_LOCK_VIOLATION = 33;private bool IsFileLocked(string file){ //check that problem is not in destination file if (File.Exists(file) == true) { FileStream stream = null; try { stream = File.Open(file, FileMode.Open, FileAccess.ReadWrite, FileShare.None); } catch (Exception ex2) { //_log.WriteLog(ex2, "Error in checking whether file is locked " + file); int errorCode = Marshal.GetHRForException(ex2) & ((1 << 16) - 1); if ((ex2 is IOException) && (errorCode == ERROR_SHARING_VIOLATION || errorCode == ERROR_LOCK_VIOLATION)) { return true; } } finally { if (stream != null) stream.Close(); } } return false;}


