17

我正在创建一个 (C#) 程序,它使用 NZB 文件下载二进制文件,任何时候可能只有一个我的应用程序实例在运行。

因此,当用户双击 .nzb 文件并且我的程序没有运行时,它应该启动并处理它(简单,文件注册)。现在,如果我的程序已经在运行,我不想启动第二个实例——我希望已经运行的实例能够获取指定的文件。

使用带有 .IsSingleInstance 技巧的 Visual Basic DLL 可以使我的应用程序成为单实例,但我不想去那里。

正确的方法似乎是使用互斥锁来确保我的应用程序是单实例的,但现在我被困在如何将指定的参数(.nzb 文件)传递给已经运行的实例。

帮助将不胜感激!:-)

4

4 回答 4

3

试试这个:你的主程序创建一个命名管道或其他进程间通信工具并监听它。您创建一个单独的小程序,当以 NZB 文件作为参数运行时,它会打开管道,将文件信息输入其中,然后退出。然后您的主程序处理新文件并下载它。

于 2009-05-27T20:37:04.657 回答
0

为什么不使用一个程序将文件添加到队列中,然后在下载程序尚未运行时启动下载程序。该下载程序监视队列,该队列只是您将下载文件名附加到的文件。

于 2009-05-27T20:37:19.197 回答
0

Genghis项目的InitialInstanceActivator

于 2009-05-27T20:38:03.267 回答
0

使用 IPC(进程间通信)机制,例如.net 远程处理

于 2009-05-27T20:39:24.013 回答