我在寫一個應用程序時遇到了一個奇怪的問題。Process.Start有時需要很長時間才能返回
它讀取主XML配置文件,爲用戶創建本地副本,然後執行一些操作,如xml文件中所示。它檢查本地xml文件是否需要更新,因此不需要每次都這樣做。
每個操作都在一個新線程中運行,一旦所有線程完成,它就會寫入一個日誌並通知用戶其完成。
其中一個操作是將.reg文件導入到註冊表中。我這樣做,就像這樣:
Process regeditProcess = Process.Start("regedit.exe", "/s " + RegFilePath);
regeditProcess.WaitForExit();
regeditProcess.Close();
我的問題是,如果應用程序創建一個新的配置文件,然後註冊表編輯過程可能需要任何東西長達30秒。如果它不創建一個,那麼它在一秒鐘內完成。
在這種檢查線程完成循環,我已經把一個
Application.DoEvents();
如果我不這樣做,註冊表編輯過程中運行,如果我等待足夠長,我收到了ContextSwitchDeadlock是檢測到來自調試器的錯誤。我試過使用不同的.reg文件,只運行這一個動作,但仍然是相同的。
在任何動作嘗試之前,主工作線程中都會創建xml文件,但我確定這對它有一些影響,我只是不確定是什麼。
我知道它有點奇怪的場景,但是有沒有人打過類似的東西?
爲什麼不使用註冊表類? http://msdn.microsoft.com/en-us/library/microsoft.win32.registry.aspx – 2011-03-22 23:02:29
有很多設置,如果它們位於將它們編碼到應用程序中的文件中,easyer就會更改它 – beakersoft 2011-03-22 23:51:04