2012年5月16日 星期三

[C#] Process.Start() 所衍伸的限制

小弟在程式A執行結束後,加上啟動程式B的功能。

String sAM_Path=@"C:\XXX.exe"
Process _process = new Process();
_process.StartInfo.FileName = sAM_Path;
_process.Start();
//Process.Start(sAM_Path);

結果B被叫起來執行後,馬上出現exception message。
(B單獨執行時是正確執行的...-___-)

直覺是在程式initail load的時後有bug,
結果因為無法用工具trace bug,只好一行一行手動trace。
最後發現... 程式B竟然去讀到程式A的設定檔啦!
雖然兩隻程式的設定檔名稱(setup.ini)都一樣,
但是各自放在A和B自己的資料夾下,理論上怎麼會有這種問題?

想了一下,應該是使用Process.Start()和讀取檔案路徑的關係,
所以小弟把讀取設定檔的檔案名稱,改為完整路徑,
再執行一次A-->B後,就不會發生讀到相同檔案的問題了。

//原本直接放設定檔名稱
//String SetupFilePath = "setup.ini";
//StreamReader sr = new StreamReader(SetupFilePath, Encoding.Default);

//改為加上完整路徑+設定檔名稱
String SetupFilePath = Application.StartupPath + @"setup.ini";
StreamReader sr = new StreamReader(SetupFilePath, Encoding.Default);

1 則留言:

  1. 恩,今天又發現寫檔案的時後,也是要帶系統完整執行路徑,否則會讀不到檔案 ~..~

    回覆刪除