我有一個clickonce應用程序,並且爲此應用程序設置了多個文件處理程序(爲了本示例,我想要使用.aaa
或.bbb
擴展名處理文件)。Clickonce應用程序和文件處理程序行爲
如果我選擇帶有這些擴展名之一的單個文件,我的應用程序按預期啓動,一切都很好。但是,如果我選擇多個文件並打開它們(通過點擊輸入或右鍵單擊並選擇打開),然後啓動我的複製副本的多個實例 - 每個文件被選中一個實例。
這不是我期望的行爲,我只想要一個實例以AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData
中的多個文件條目開始。這可以實現,還是我的期望不正確?
編輯:
只是爲了闡述:我們遵循了由@Matthias提到的單個實例方法,首先要啓動創建一個名爲服務器管道。然後啓動後續實例,檢測它們是次要的,通過命名管道將其命令行參數(文件名)傳遞到主實例,然後退出。主實例通過命名管道接收文件名,並執行其操作(啓動文件導入嚮導)。
當用戶選擇幾個文件(即5個文件),然後選擇在應用程序中打開這些文件時,就會出現這個問題。我沒有獲得一個以命令行提供的5個文件名開頭的輔助實例,而是獲得了5個啓動應用程序的輔助實例,每個實例在命令行上都有一個文件名。其中的每一個都會創建一個名爲pipe的客戶端並將該文件名傳遞給主實例 - 所以名爲pipe的服務器會收到5個單獨的消息。
跟進的想法:
聊起這之後發生,我認爲也許這只是方式註冊的文件處理工作,也許這是不相關的ClickOnce的。也許解決方案是讓服務器命名管道在收到每條消息後暫停,並嘗試在執行消息之前排隊消息?
此行爲也適用於贏取窗體應用程序。剛剛嘗試過。我想這是無法解決的。 – Matthias 2011-12-16 03:10:08