在C#中,我知道如何从代码运行.NET可执行文件,并查明可执行文件的实例是否已在运行。我想要做的是,如果 实例已在运行,请在不同可执行文件的C#代码中获取Foo
对象的实例。
我有一个Windows应用程序,(例如Outlook的NET版本)。用户可以正常使用该应用程序,但是在后台运行也是一个监视来自第三方系统的XML文件的过程。
我需要的是观察程序进程启动.NET程序(如果它没有运行)(或获取句柄),然后在新的/中调用对象实例上的方法CreateEmail
现有流程。
答案 0 :(得分:2)
您可以使用.NET Remoting激活已在运行的应用程序中的对象。
查看以下示例:About .NET Remoting: Three concepts Compared and Simplified
答案 1 :(得分:1)
使用System.Diagnostics.Process
类。
要运行,您可以Process.Start("string path");
并列出当前正在运行的流程以执行检查。
答案 2 :(得分:1)
为什么不将FileSystemWatcher添加到主应用程序?那就是后台进程除了监视XML文件之外什么也不做。
如果这不可行,您可以使用NamedPipeServerStream
和NamedPipeClientStream
从后台进程向主应用程序发送“命令”。当主应用程序收到此命令时,它将运行CreateEmail
方法。
答案 3 :(得分:0)
嗯,你可以使用:
Process.GetProcessesByName(<process Name here>);
返回Process []。
查看Process类的静态方法,它们非常直观且有用。