0

在我的应用程序中,我使用以下代码通过 app.config 的代码启动一个进程

Process proc = Process.Start(@"c:\windows\system32\notepad.exe");

比我在运行它时必须更改 app.config 文件两到三次。我想知道怎么做,所以我不需要停止和更改 app.config 文件,而是重新启动该过程。

我有在另一篇文章中看到的以下代码。

// Load the app.config file
XmlDocument xml = new XmlDocument();
xml.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

// Do whatever you need, like modifying the appSettings section

// Save the new setting
xml.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

我想知道最后一行是否保存了进程仍在运行时正在完成的新设置?还是需要重新启动流程?我的目标是我不需要继续重新启动该过程。谢谢

4

2 回答 2

0

所以在 WCF 中,app.config 的目的是让管理员能够对服务进行更改,而无需重新编译代码(他们通常不知道如何做,或者没有工具去做)。如果您正在编写代码,则无需更改 app.config 文件,因为您是程序作者。

请记住,如果您只是想在不同的地址(绑定或您拥有什么)重新托管,那么只需关闭服务并在代码中重新启动它,例如:

WCF 自托管服务 - C# 中的端点

希望这可以帮助

于 2013-02-05T15:14:43.327 回答
0

如果不想重启子进程,则需要使用进程间通信(IPC)技术来通知子进程需要刷新它的app.config。您如何做到这一点在一定程度上取决于您的应用程序的规模以及您将从 IPC 链接中获得多少使用。

请参阅此 SO 帖子以讨论 C# 中最简单的 IPC 使用。这篇文章是您需要在子进程中调用以更新它的 app.config 的代码

编辑:

我找到了一篇更好的帖子来解释进程间通信的其他选项

于 2013-02-05T15:14:50.303 回答