1

在我的应用程序中,我在管理员端每 15 秒创建一个 XML 文件。为了创建 XML,我使用了 XML 的字符串生成器。

File.WriteAllText("D:\\FE_Display.xml", StringBuilder.ToString())

我过去每 15 秒在前端的网格中显示相同的文件。该文件至少 10memebrs 在前端同时使用。以下代码用于前端。

Dim ds As New DataSet()  

ds.ReadXml("d://FE_Display.xml")
Try
    If ds.Tables(0).Rows.Count > 0 Then
        Grid1.DataSource = ds.Tables(0)
        Grid1.DataBind()
    End If
Catch ex As Exception

End Try

如果两个事件(读取和写入)同时发生,我会遇到错误

该进程无法访问文件“FE_Display.xml”,因为它正被另一个进程使用

4

2 回答 2

2

文件通常是互斥的,除非您提供FileShare。您可以读取文件将其保存在内存中然后写入。

Reading并且Writing同时没有意义(至少对于 xml),因为 xml 必须具有良好的格式。当你同时写作和阅读时,你会得到意想不到的结果。

最好的方法是

  1. 打开文件,使用它并关闭它。
  2. 打开文件,写入。
于 2013-07-23T20:46:06.303 回答
0

FileShare.ReadWrite打开文件进行写入时使用该选项。

允许随后打开文件以进行读取或写入。如果未指定此标志,则任何打开文件进行读取或写入的请求(由该进程或其他进程)都将失败,直到文件关闭。但是,即使指定了此标志,仍可能需要其他权限才能访问该文件。

从这里获取:

http://msdn.microsoft.com/en-us/library/system.io.fileshare.aspx

打开时的示例:

var filestream = File.Open(fileName,
                            FileMode.Open,
                            FileAccess.Read,
                            FileShare.ReadWrite);

然后您对文件的后续读取可以打开而不会出现错误。

于 2013-07-23T20:51:04.850 回答