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

C#:如何-接受新参数的单实例应用程序?,c#,parameters,instance,C#,Parameters,Instance,我正在创建一个(C#)程序,使用NZB文件下载二进制文件,任何时候都可能只有一个应用程序实例在运行 因此,当用户双击一个.nzb文件而我的程序没有运行时,它应该启动并处理它(简单,文件注册)。 现在,如果我的程序已经在运行,我不想启动第二个实例-我希望已经运行的实例拾取指定的文件 使用Visual Basic DLL和.IsSingleInstance技巧可以使我的应用程序成为单个实例,但我不想这样做 正确的方法似乎是使用互斥来确保我的应用程序是单实例的, 但是现在我一直在研究如何将指定的参数(

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

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

使用Visual Basic DLL和.IsSingleInstance技巧可以使我的应用程序成为单个实例,但我不想这样做

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


非常感谢您的帮助!:-)

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

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

查看项目中的InitialInstanceActivator

使用IPC(进程间通信)机制,例如

您可能知道这一点,但您可能正在用应用程序重新发明轮子。只是一个例子是的,还有无数其他例子;-)这只是一个用C#来摆弄我的手指的爱好项目,如果我喜欢这个结果,世界可能只会有另一个免费的NZB下载程序为什么不使用Microsoft.VisualBasic.dll中的SingleInstanceController?它是框架内的一个程序集,与其他任何程序集一样。仅仅因为名称是VisualBasic,它就不会被使用。如果微软叫它Microsoft.Foo.dll,每个人都会使用它!Oliver,它将添加一个附加的dll引用。这是一个原因,不管名字叫什么;-)