2013-09-26 59 views
1

鎖定在C#程序中的文件,我需要每一個「N」 seconds.My程序代碼後,在文件讀取一個字符串就像下面,解鎖通過正則表達式

start: 

. 
. 
. 
config_path = Regex.Match(System.IO.File 
        .ReadAllText("c:\docs\xyz.log"),".*Command.*File:.*") 
     .ToString() 
     .Split(new string[] { "File: ", " ...\r" },     
         StringSplitOptions.RemoveEmptyEntries) 
     .Last(); 
. 
. 
. 


goto start; 

對於在第一次循環中,程序執行得很好。但對於第二次進入標籤(start)的情況,拋出了異常「c:\ docs \ xyz.log」。我怎樣才能解鎖這個文件,每次進入標籤。

+0

從技術上說,該文件沒有被Regex鎖定,並且沒有這樣的例外「c:\ docs \ xyz.log」。可能存在文件IO異常,但不是您描述的方式。此外做一個瘋狂的猜測:你是C#的新手,你應該避免goto,因爲它在大多數情況下被認爲是不好的風格。 (其中你的外表完全像一個) – Samuel

回答

0

如果您使用從同一個文件相同的文字一遍又一遍 - 你最好讀入循環開始前一個字符串,然後一遍又一遍的使用字符串:

string str = System.IO.File.ReadAllText("c:\docs\xyz.log"); 
... 
// now use str in the loop 
start: 
... 

評論:
在同一行上寫出如此多的命令是一種糟糕的做法,當你得到一個錯誤,你不知道它來自哪裏。