首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止VB.NET windows应用程序与VB.NET web应用程序之间的文件共享冲突

如何防止VB.NET windows应用程序与VB.NET web应用程序之间的文件共享冲突
EN

Stack Overflow用户
提问于 2017-11-15 13:04:27
回答 1查看 60关注 0票数 1

我有一个VB.NET网络应用程序前端和一个VB.NET窗口应用程序后端,都运行在我的AzureWindows2012服务器VM上。

后端每10秒运行一次,检查数据文件,有时写入数据。

当用户使用web时,前端(web)访问数据文件。

有时,web在执行My.Computer.FileSystem.WriteAllText或My.Computer.FileSystem.ReadAllText时会出错。

这两种方法都是后端和前端访问数据文件的方式。数据文件都是简单的基于.txt文本的文件.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-15 14:03:07

从故障是间歇性的事实来看,很可能您正在经历两个进程之间的争用问题。您可能希望手动写入文件,并确保您实现了一些至少可以缓解某些问题的共享:

代码语言:javascript
复制
Using fs As New FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read),
        sw As New StreamWriter(fs)
    sw.Write("A whole bunch of text to write")
End Using

上述代码在对其放置只读锁后打开该文件。这允许后续进程打开文件读取,因此即使在Windows应用程序中保存该文件时,web应用程序也可以读取文件中的内容,而无需抛出。

代码语言:javascript
复制
Using fs As New FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite),
        sr As New StreamReader(fs)
    Console.WriteLine(sr.ReadToEnd())
End Using

最后一个片段是用来读取文件的。打开时,它会放置一个读/写共享。由于此进程仅从文件中读取,因此可以允许其他进程打开该进程进行读取,而不会出现问题。在这种情况下,我允许其他进程写入文件,使它们不受限制。

您将不得不处理由于另一个进程设置的锁而无法在您指定的模式下打开它时可能出现的异常。

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

https://stackoverflow.com/questions/47308169

复制
相关文章

相似问题

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