我有一个clickonce应用程序,并且为此应用程序设置了多个文件处理程序(为了本示例,我想要使用.aaa
或.bbb
扩展名处理文件)。Clickonce应用程序和文件处理程序行为
如果我选择带有这些扩展名之一的单个文件,我的应用程序按预期启动,一切都很好。但是,如果我选择多个文件并打开它们(通过点击输入或右键单击并选择打开),然后启动我的复制副本的多个实例 - 每个文件被选中一个实例。
这不是我期望的行为,我只想要一个实例以AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData
中的多个文件条目开始。这可以实现,还是我的期望不正确?
编辑:
只是为了阐述:我们遵循了由@Matthias提到的单个实例方法,首先要启动创建一个名为服务器管道。然后启动后续实例,检测它们是次要的,通过命名管道将其命令行参数(文件名)传递到主实例,然后退出。主实例通过命名管道接收文件名,并执行其操作(启动文件导入向导)。
当用户选择几个文件(即5个文件),然后选择在应用程序中打开这些文件时,就会出现这个问题。我没有获得一个以命令行提供的5个文件名开头的辅助实例,而是获得了5个启动应用程序的辅助实例,每个实例在命令行上都有一个文件名。其中的每一个都会创建一个名为pipe的客户端并将该文件名传递给主实例 - 所以名为pipe的服务器会收到5个单独的消息。
跟进的想法:
聊起这之后发生,我认为也许这只是方式注册的文件处理工作,也许这是不相关的ClickOnce的。也许解决方案是让服务器命名管道在收到每条消息后暂停,并尝试在执行消息之前排队消息?
此行为也适用于赢取窗体应用程序。刚刚尝试过。我想这是无法解决的。 – Matthias 2011-12-16 03:10:08