2014-05-05 54 views
0
Private Sub tmrTrade_Tick(sender As Object, e As EventArgs) Handles tmrTrade.Tick 
    tmrTrade.Enabled = False 
    Dim TradeCount As Integer = 0 
    Dim LastTrade As String = "" 
    'Stream File 
    Dim fStream As New System.IO.FileStream(OpenFileDialog1.FileName.ToString(), IO.FileMode.Open) 
    Dim sReader As New System.IO.StreamReader(fStream) 
    'Loop Through Lines 
    Do While sReader.Peek >= 0 
     TradeCount = TradeCount + 1 
     LastTrade = sReader.ReadLine 
    Loop 
    'to go back to an array 
    fStream.Close() 
    sReader.Close() 

    'Check if there is a new trade 
    If TradeCount = OldTradeCount Then 
     'Do nothing no new trades 
     tmrTrade.Enabled = True 
    Else 
     'Disable tmr until trade complete 
     tmrTrade.Enabled = False 
     'New Trade lets trade 

     'Remove date get put or call 
     LastTrade = Split(LastTrade, "|")(1) 
     OldTradeCount = TradeCount 
     'Make the trade 
     MakeTrade(LastTrade) 

    End If 
    'Save Copy 
End Sub 

基本上這是爲什麼它檢查一個.txt文件,當一個交易是可用的時候它會添加一個行,這樣做是每10ms檢查一次行的更改在.txt文件上。在不同的程序中打開同一個文件

但是,我面臨的問題是,如果我打開該程序的多個版本,並打開相同的.txt文件,它會收到警告,該文件正在被另一個程序使用。請不要我只需要讀取文件不寫(metatrader正在寫)。

回答

1

您需要添加的訪問模式和共享標誌打開該文件沒有鎖定它

FileShare enumeration
FileAccess enumeration

Using fStream = new FileStream(OpenFileDialog1.FileName, _ 
        FileMode.Open, FileAccess.Read, FileShare.Read) 
    Using sReader = new StreamReader(fStream) 
    .... 

    End Using 
End Using 

我也封閉兩個流中使用的語句是確保它們在完成使用後正確處置

相關問題