2016-09-06 2 views
0

Мне нужно запустить несколько экземпляров приложения, и я должен каким-то образом его идентифицировать.Как запустить процесс/экземпляр с помощью настраиваемого идентификатора

Можно ли запустить экземпляр с некоторыми пользовательскими TAG так что позже я могу найти экземпляр, который мне нужен?

Process p = new Process(); 
// p.TAG = "Guid"; ?????? 
p.StartInfo.FileName = "path"; 
p.Start(); 

UPDATE 1

Я запускать несколько процессов в НАГРУЗКИ случае WPF приложения. И иногда невозможно получить идентификатор процесса текущего приложения. Поэтому я ищу подход к дифференциации экземпляра в некоторых Выборочных, если это возможно ...

Так модель выглядит

ParentApp.exe 
    ----> Sun.exe 
    ----> Moon.exe 


ParentApp.exe 
    ----> Sun.exe 
    ----> Moon.exe 

И я использую LOAD событие ParentApp.exe перейти к Солнцу .exe и Moon.exe. Идентификатор процесса, поэтому они могут создавать корректные MSMQ и обмениваться данными с ParentApp.exe, а также ParentApp.exe могут закрыть эти приложения.

UPDATE 2

Можем ли мы сохранить некоторые пользовательские данные во время применения выполнения здесь

p.Domain = "mydomain?????"; 
p.EnvironmentVariables.Add("MY_NEW_VARIABLE", "SOME_TEXT????"); 

http://blog.gapotchenko.com/eazfuscator.net/reading-environment-variables

+0

Посмотрите на это: HTTP : // stackoverf low.com/questions/611094/async-process-start-and-wait-for-it-to-finish?rq=1 Переменная, которая возвращается после запуска процесса, вы можете сохранить ее в списке, а затем используйте его, чтобы определить, работает ли этот процесс. – Versatile

+0

@Versatile Как это связано с вопросом? –

+0

@Dimi почему вы хотите получить какой-либо другой идентификатор, кроме самого объекта Process? Если вы не повторно используете один и тот же объект для запуска нескольких процессов, каждый объект «Process» соответствует запущенному ему процессу. Вы можете получить процесс «PID возвращается свойством Id –

ответ

0

Вы можете хранить Process.Id

Process p = Process.Start("notepad.exe"); 
MessageBox.Show(p.Id.ToString()); 
+0

Вам не нужно хранить идентификатор, когда у вас есть сам объект процесса. –

+0

Основная проблема такого подхода, что ИНОГДА не возвращает идентификатор, поэтому я ищу другой подход. Если это возможно, конечно ... –

+0

@Dimi Что значит «иногда»? Если ваш процесс завершается или он запускает другой процесс, а затем завершается, идентификатор в любом случае будет недействительным. Нет другого способа идентифицировать процесс, кроме его ID –

Смежные вопросы