c#检测文件是否已完成写入

我正在编写一个PowerPoint加载项,用于FTP已转换为WMV的文件。

我有以下代码可以正常工作:

oPres.CreateVideo(exportName); oPres.SaveAs(String.Format(exportPath, exportName),PowerPoint.PpSaveAsFileType.ppSaveAsWMV,MsoTriState.msoCTrue); 

但这会启动PP内部的进程,进行文件转换,并在文件写完之前立即转到下一行代码。

有没有办法检测此文件何时完成写入,以便我可以运行下一行代码知道该文件已完成?

使用文件时,它不可用,因此您可以检查可用性并等待文件可用。 一个例子:

  void AwaitFile() { //Your File var file = new FileInfo("yourFile"); //While File is not accesable because of writing process while (IsFileLocked(file)) { } //File is available here } ///  /// Code by ChrisW -> http://stackoverflow.com/questions/876473/is-there-a-way-to-check-if-a-file-is-in-use ///  protected virtual bool IsFileLocked(FileInfo file) { FileStream stream = null; try { stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None); } catch (IOException) { return true; } finally { if (stream != null) stream.Close(); } //file is not locked return false; }