У меня есть просмотрщик файлов 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. Какова будет лучшая практика?