C#:如何 – 接受新参数的单实例应用程序?

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

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

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

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

帮助将不胜感激! 🙂

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

为什么没有一个程序将文件添加到队列中,然后启动下载程序(如果它尚未运行)。 该下载程序监视队列,该队列只是您下载文件名的文件。

查看Genghis项目中的InitialInstanceActivator

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

使用“很好的实现”,我必须在WriteLine()之后添加一个writer.Flush()来使它工作。 我浪费了一点时间才发现这个……