我們的Winform應用程序由一個Main.exe和一個Launcher.exe組成。 Launcher應用程序的目的是檢查Main.exe的更新版本。爲什麼「我的」名稱空間不可用?
如果發現沒有更新它啓動使用System.Diagnostics.Process.Start
如果找到更新,它複製新MAIN.EXE到位,並啓動MAIN.EXE以同樣的方式(MAIN.EXE在這種情況下,它將成爲Main.exe的全新副本)。
這裏的的Process.Start代碼:
Dim p As New ProcessStartInfo
p.FileName = "Main.exe"
p.WindowStyle = ProcessWindowStyle.Normal
Process.Start(p)
此代碼執行是否有一直的更新,總是成功地激發了MAIN.EXE。
但是我們MAIN.EXE,如果它是在第一時間(即更新後),會報錯上引用了我的命名空間中的線,如My.Settings或My.Computer.FileSystem
運行例如這條線將導致一個錯誤:
Msgbox(My.Computer.FileSystem.SpecialDirectories.Desktop)
這裏的錯誤:
System.IO.DirectoryNotFoundException: Could not find special directory 'Desktop'. at Microsoft.VisualBasic.FileIO.SpecialDirectories.GetDirectoryPath(String Directory, String DirectoryNameResID) at Microsoft.VisualBasic.FileIO.SpecialDirectories.get_Desktop() at Microsoft.VisualBasic.MyServices.SpecialDirectoriesProxy.get_Desktop()
不過,雖然這個例子是指桌面記住它找不到任何的SpecialDirectories。它不限於桌面。
但只有它第一次運行(即在更新後立即)。此後它將運行良好。
如果進程失敗的更加壯觀,關於文件系統問題,鎖或線程,這將是更容易理解。但爲什麼只有這個「我的名字空間」的「小問題」?
你會得到什麼錯誤? – SLaks 2010-01-13 21:03:37
我向Q添加了一個示例錯誤 – hawbsl 2010-01-13 21:11:28