我使用(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脚本无法更新。
答案 0 :(得分:0)
在.NET中,FileSystemWatcher
类可以帮助您解决此问题。每次文件观察者说文件已更改时,您都可以读取该文件。这是reference documentation。
答案 1 :(得分:0)
您无法同时从两个进程读取和写入文件。嗯,从技术上讲,你可以,但它可能会导致Cross-Origin Resource Sharing这很糟糕。
您需要在文件周围实现某种共享锁定机制,以防止您的两个程序对其进行争夺。或者,如果您可以保证消费者VB.NET程序打开文件的时间少于5秒,您可以使用race condition并且只需让VB.NET程序在每次更新时读取该文件。