C #: как - один экземпляр приложения, который принимает новые параметры? - PullRequest
17 голосов
/ 28 мая 2009

Я создаю (C #) программу, которая загружает двоичные файлы с использованием файлов NZB, в любой момент может быть запущен только один экземпляр моего приложения.

Поэтому, когда пользователь дважды щелкает файл .nzb и моя программа не запускается, он должен запуститься и обработать его (просто, регистрация файла). Теперь, если моя программа уже запущена, я НЕ хочу запускать второй экземпляр - я хочу, чтобы уже запущенный экземпляр забрал указанный файл.

Создание одного экземпляра моего приложения можно сделать с помощью библиотеки DLL Visual Basic с помощью трюка .IsSingleInstance, но я не хочу туда идти.

Кажется, правильный путь - использовать мьютекс, чтобы убедиться, что мое приложение является единичным, но теперь я застрял на том, как передать указанный параметр (файл .nzb) в уже работающий экземпляр.

Помощь будет принята с благодарностью! : -)

Ответы [ 4 ]

3 голосов
/ 28 мая 2009

Попробуйте это: ваша основная программа создает именованный канал или другое средство межпроцессного взаимодействия и прослушивает его. Вы создаете отдельную небольшую программу, которая при запуске с файлом NZB в качестве параметра открывает канал, передает в него информацию о файле и завершает работу. Ваша основная программа затем обрабатывает новый файл и загружает его.

0 голосов
/ 28 мая 2009

Используйте механизм IPC (межпроцессное взаимодействие), например .net remoting

0 голосов
/ 28 мая 2009

Посмотрите на InitialInstanceActivator на Чингиз проект

0 голосов
/ 28 мая 2009

Почему бы не иметь одну программу, которая добавляет файл в очередь, а затем запускает программу загрузки, если она еще не запущена. Эта программа загрузки следит за очередью, которая представляет собой просто файл, к которому вы добавляете имена файлов для загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...