.NET:如何使用现有实例打开文件?

我有一个MDI文件查看器.也就是说,我的程序可以在单个实例中打开多个文件.顺便说一句,我的应用程序不是单实例应用程序,因此用户可以根据需要打开任意数量的实例.

我想要的行为是

When the user double-clicks a file in Windows Explorer,
if there is an existing instance of my application,
   then open the file with that instance
else
   open the file with a new instance.

我认为这种行为很常见. Internet Explorer 9就像.所以,我相信一定有很多人已经实现了这一点.有没有完善的.NET(C#是首选的)示例代码(如果可能的话,不使用Win32 API)?

我想这个算法可能类似于以下内容,但我不知道它是最好还是最干净的代码来实现它(不使用Win32 API).

At the program's start up
    1)If there are arguments in Main(),
         check for existing instances.
    2)If an instance exists,
         send a message to the instance so that it can open the file.
         Then exit.
    3)else
         open the file.

– – 添加 – – –
对于那些用现有答案回答我的问题的人.

我的申请不是单一申请!请.它就像Internet Explorer 9.我在看WCF P2P,因为我必须向我的应用程序的每个运行实例广播一个文件打开消息,然后选择其中一个.但是使用WCF P2P似乎有很多工作要做,因为它似乎是打开和监听TCP端口.什么是最佳做法?

最佳答案 我发现另一个非常相似:

Opening a “known file type” into running instance of custom app – .NET

点赞