3

在 C# 中,我知道如何从代码中运行 .NET 可执行文件,并且还知道该可执行文件的实例是否已经在运行。我想做的是,如果一个实例已经在运行,则Foo在不同可执行文件的 C# 代码中获取该对象的一个​​实例。

我有一个 Windows 应用程序(例如 Outlook 的 .NET 版本)。用户可以正常使用该应用程序,但在后台运行的还有一个进程正在监视来自第三方系统的 XML 文件。

我需要的是让观察者进程在它没有运行时启动.NET程序(或者如果它是获取一个句柄),然后CreateEmail在新的/现有的进程中调用对象实例的方法。

4

4 回答 4

2

您可以使用 .NET Remoting 在已运行的应用程序中激活对象。

查看以下示例:关于 .NET Remoting:三个概念的比较和简化

于 2009-10-14T20:52:53.140 回答
1

使用System.Diagnostics.Process类。

要运行,您还Process.Start("string path");可以列出当前正在运行的进程以执行检查。

于 2009-10-14T20:27:54.947 回答
1

为什么不直接将 FileSystemWatcher 添加到主应用程序?那是如果后台进程除了监视 XML 文件之外什么都不做。

如果这不可行,您可以使用NamedPipeServerStreamandNamedPipeClientStream将“命令”从后台进程发送到主应用程序。当主应用程序收到此命令时,它将运行该CreateEmail方法。

于 2009-10-14T21:16:13.670 回答
0

好吧,您可以使用:

Process.GetProcessesByName(<process Name here>);

它返回进程 []。

查看 Process 类的静态方法,它们非常直观且有用。

于 2009-10-14T20:30:05.893 回答