2015-06-29 27 views
-5

我已經使用(AFL SCRIPTING LANGUAGE)創建了文本文件,此腳本將每5秒更新(寫入)一個文本文件。我會嘗試使用vb.net讀取文件,當我運行Visual Studio的vb.net代碼時,一切正常,但(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. 未選中「啓用Visual Studio託管過程」,仍然沒有解決問題。
+3

你的帖子中有一些嚴重的格式問題。還有很多CAPS。請重新格式化。 – sstan

+0

哎喲,我的耳朵...你爲什麼要尖叫? –

回答

0

在.NET中,FileSystemWatcher類可以幫助你解決這個問題。每次文件觀察者說文件已更改時,您都可以讀取該文件。這裏是它的reference documentation

0

您無法同時從兩個進程讀取和寫入文件。嗯,在技術上你可以,但它可能導致race condition這是不好的。

你需要在文件周圍實現某種共享鎖定機制,以防止你的兩個程序對它進行爭奪。或者,如果您可以保證消費者VB.NET程序將文件打開時間少於5秒,那麼您可以使用MrAxel's solution,並且每次更新時只需讓VB.NET程序讀取該文件即可。