C #: как – одно приложение экземпляра, которое принимает новые параметры?

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

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

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

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

Помощь будет оценена! 🙂

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

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

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

Используя «приятную реализацию», мне пришлось добавить writer.Flush () после WriteLine (), чтобы он работал. Я потратил немного времени, чтобы найти это …

Interesting Posts
Давайте будем гением компьютера.