我们如何同时访问读写XML

时间:2013-07-23 20:40:58

标签: asp.net vb.net file

在我的应用程序中,我在管理员端为每15秒创建一个XML文件。 为了创建XML,我已经将字符串构建器用于XML。

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

我过去每隔15秒在前端网格中显示的同一个文件。此文件最少10美元在前端同时使用。下面的代码用于前端。

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',因为它正被另一个进程

使用

2 个答案:

答案 0 :(得分:2)

除非您提供FileShare,否则文件通常是互斥的。你可以读取一个文件保存在内存中,然后写下来。

ReadingWriting在同一时间没有意义(至少对于xml而言),因为xml必须格式良好。当你同时写作和阅读时,你会得到意想不到的结果。

最好的方法是

  1. 打开文件,关闭它。
  2. 打开文件,写信给它。

答案 1 :(得分: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);

然后您的文件的后续读取可以无误地打开。