首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中读/写共享文件时,如何防止锁定?

在C#中读/写共享文件时,如何防止锁定?
EN

Stack Overflow用户
提问于 2020-07-24 15:38:20
回答 1查看 131关注 0票数 0

我有一个桌面应用程序,下面是要遵循的流程。在应用程序初始化期间,应该点击API,并将excel下载到共享位置。下载完成后,应用程序应读取excel文件。这不会是运行应用程序的单个实例的问题。但由于这是一个桌面应用程序,会运行多个实例(在不同的计算机上),应用程序每次在初始化期间都会下载文件。我正在使用OLE Db引擎读取文件,文件被锁定,在打开应用程序的另一个实例时,出现错误“ole db引擎无法读取文件,因为它被另一个用户打开了”。如何防止这种情况?

代码语言:javascript
复制
if (response.Result.IsSuccessStatusCode)
                    {
                        using (Stream streamToWriteTo = new FileStream(pathToDownloadReport, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                        {
                            response.Result.Content.CopyToAsync(streamToWriteTo).Wait();
                        }
                    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-24 16:15:37

如果你想对一个文件进行并发访问,你需要确保每个客户端只对该文件进行读锁定。使用OleDb,您可以通过ReadOnly访问通过连接打开到文件的连接。

代码语言:javascript
复制
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\path\to\your\exelfile.xlsx;Extended Properties=\"Excel 12.0;IMEX=1;ReadOnly=true;\""

您仍然需要确保没有人在Excel中打开该文件。

由于您只能对您的文件进行只读访问,因此您最好创建该文件的本地副本并将其打开。这样锁定就不成问题了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63068987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档