我在写一个应用程序时遇到了一个奇怪的问题。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