Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 打开streamreader时出错,因为另一个进程正在使用该文件_Asp.net_Locking_Streamreader - Fatal编程技术网

Asp.net 打开streamreader时出错,因为另一个进程正在使用该文件

Asp.net 打开streamreader时出错,因为另一个进程正在使用该文件,asp.net,locking,streamreader,Asp.net,Locking,Streamreader,我正在开发一个应用程序来读取excel电子表格,验证数据,然后将其映射到sql表。该过程是通过streamreader读取文件,验证数据,手动更正excel电子表格,再次验证——重复此过程,直到所有数据验证 如果excel电子表格处于打开状态,那么当我试图通过streamreader读取数据时,我会遇到一个错误,“该进程无法访问该文件……因为它正被另一个进程使用。”是否有办法解除锁定或以其他方式将数据读入streamreader,而无需每次打开和关闭excel 当您调用File.Open获取流时

我正在开发一个应用程序来读取excel电子表格,验证数据,然后将其映射到sql表。该过程是通过streamreader读取文件,验证数据,手动更正excel电子表格,再次验证——重复此过程,直到所有数据验证


如果excel电子表格处于打开状态,那么当我试图通过streamreader读取数据时,我会遇到一个错误,“该进程无法访问该文件……因为它正被另一个进程使用。”是否有办法解除锁定或以其他方式将数据读入streamreader,而无需每次打开和关闭excel

当您调用
File.Open
获取流时,是否使用允许您指定
FileAccess
的重载

请注意以下参数:

public static FileStream Open(
    string path,
    FileMode mode,
    FileAccess access,
    FileShare share
)

您可以将
FileAccess.Read
传递给第三个参数,以指示您只需要只读访问。您还应该设置
FileShare.Read
以允许其他人以只读方式打开文件,而不是自己锁定。请注意,如果MS Excel使用FileShare.None打开文件,您可能无法访问它。

如果在资源管理器中将Excel电子表格标记为只读,会发生什么情况?我认为Excel本身会在文件上打开一个独占锁,但可能通过使文件只读,其他进程可以同时读取它。不过,我没有excel,所以我无法测试它。好主意,只是用户需要能够编辑和保存数据更改。非常感谢您,这非常有效。我可以将FileShare设置为FileShare.ReadWrite,这样我就可以手动编辑电子表格(在excel中打开的csv文件),保存编辑,并且仍然允许映射程序读取数据。