我在Unix上以mono的形式运行C#.net程序,我希望在程序启动后控制或改变程序的行为。
我会将新功能写入程序中,所以我只需要在不重新启动程序的情况下触发它们。
我想我可以允许程序接受SOAP之类的消息,但感觉这可能是保险。如果我可以从一个单独的程序本地控制程序可能会更好,但我不确定从哪里开始。
有没有办法在没有单独的程序启动程序后给程序发出指令,或者如果单独的程序是解决方案,有人知道从哪里开始这个吗?
谢谢!
答案 0 :(得分:1)
我认为您可以在应用中创建一些UI表单,然后您就可以使用此UI来控制您的应用。如果它没有使用,你可以将该表格隐藏到托盘。
或者您可以使用第二个应用程序并使用套接字向您的第一个应用程序发送一些消息,例如。
答案 1 :(得分:1)
通常在Unix程序(reference)中完成此操作的方法是发送SIGHUP signal,并让程序将其解释为重新加载其配置文件的命令。
可以使用Unix kill
命令从终端或脚本发送信号(这是以这种方式命名的,因为默认信号是SIGTERM以请求进程自行关闭)。
这是您将SIGHUP发送到具有特定PID的进程的方式:
kill -HUP [pid]
您可以使用单UnixSignal类在.NET程序中处理这些Unix信号。一种方法是使用.WaitOne
等待专用线程上的信号。另一种方法是定期轮询.IsSet
或.Count
。