我有一个mvvp-wpf应用程序..我使用infragistics来读取文件。当文件打开时......如果我尝试通过应用程序读取文件,我会得到一个例外。
解决此问题的一种方法是......要求用户关闭文件。
还有其他解决方案吗?
提前致谢!
答案 0 :(得分:3)
尝试以最少的权限打开它,例如不要求独占读或写锁。
答案 1 :(得分:1)
你可以尝试:
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, System.IO.FileShare.ReadWrite)
以非独占模式打开文件。
答案 2 :(得分:1)
异常的类型在这里有所帮助,但我能说的是:当程序打开文件时,它为OpenFile api提供了两个参数:
根据文件第一次打开的方式,您可能会或可能不会再次打开它:如果它已经以共享模式打开,例如,您将无法再次打开它别的什么。
答案 3 :(得分:0)
经过一些搜索后,我找到了解决此问题的方法: 使用文件名创建FileStream对象,并将FileMode.Open,FileAccess.Read,FileShare.ReadWrite作为参数。
看起来Excel在XLS文件运行时保持写锁定并打开文件,因此我们需要在ReadWrite fileshare模式下打开文件。
您可以将此FileStream对象作为参数传递给Workbook.Load方法,而不是文件名,然后程序将能够在Excel中打开时读取该文件。
FileStream selectedFileStream = new FileStream(currentFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
Workbook internalWorkBook = Workbook.Load(selectedFileStream);