gpt4 book ai didi

asp.net - 如何防止 VB.NET Windows 应用程序和 VB.NET Web 应用程序之间的文件共享发生冲突

转载 作者:行者123 更新时间:2023-12-03 03:02:49 25 4
gpt4 key购买 nike

我有一个 VB.NET Web 应用程序前端和一个 VB.NET Windows 应用程序后端,它们都在我的 Azure Windows 2012 服务器 VM 上运行。

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

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

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

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

最佳答案

从故障是间歇性的事实来看,您的两个进程可能遇到了争用问题。您可能需要手动写入文件并确保实现一些共享,这至少可以缓解一些问题:

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 应用程序也可以读取其中的内容而不会抛出异常。

Using fs As New FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite),
sr As New StreamReader(fs)
Console.WriteLine(sr.ReadToEnd())
End Using

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

由于另一个进程设置的锁定而无法以指定的模式打开它时,您必须处理可能出现的异常。

关于asp.net - 如何防止 VB.NET Windows 应用程序和 VB.NET Web 应用程序之间的文件共享发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47308169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com