多个编程尝试访问相同的文本文件

时间:2015-06-29 14:05:17

标签: vb.net visual-studio-2010

我使用(AFL SCRIPTING LANGUAGE)创建了文本文件,此脚本每5秒更新(写入)一个文本文件。我将尝试使用vb.net读取文件,当我运行vb.net代码表单visual studio时,一切正常但是(AFL脚本无法更新文本文件),这里是我的vb.net代码:

Dim FILE_NAME As New FileStream("C:\myreport\myfile.TXT", FileMode.Open, FileAccess.Read, FileShare.Read)

REM Dim FILE_NAME As String = "C:\myreport\myfile.TXT"  

    REM Dim TextLine As String

    REM  If System.IO.File.Exists(FILE_NAME) = True Then

    Dim objReader As New System.IO.StreamReader(FILE_NAME)

    Do While objReader.Peek() <> -1
        MYSTRING(I) = objReader.ReadLine()
        I = I + 1
    Loop

    REM End If

当我运行上面的代码时,(AFL脚本无法更新文本文件),

简单地说:

当我运行vb.net代码(用于访问文本文件)时,AFL脚本无法更新。

  1. 我有共享读/写文件夹(文本文件存在的地方),没有效果,我面临同样的问题。
  2. 未经检查&#34;启用Visual Studio托管流程&#34;,仍然无法解决问题。

2 个答案:

答案 0 :(得分:0)

在.NET中,FileSystemWatcher类可以帮助您解决此问题。每次文件观察者说文件已更改时,您都可以读取该文件。这是reference documentation

答案 1 :(得分:0)

您无法同时从两个进程读取和写入文件。嗯,从技术上讲,你可以,但它可能会导致Cross-Origin Resource Sharing这很糟糕。

您需要在文件周围实现某种共享锁定机制,以防止您的两个程序对其进行争夺。或者,如果您可以保证消费者VB.NET程序打开文件的时间少于5秒,您可以使用race condition并且只需让VB.NET程序在每次更新时读取该文件。