2011-01-04 4 views
0

У меня есть класс C#, MyCommand, который запускается с использованием backgroundWorker и пула потоков. MyCommand выполняет исполняемый файл командной строки с использованием класса Process. Экземпляры MyCommand, каждый в своем потоке, запускаются серийно, а не параллельно. Мне просто интересно, будет ли выполнение Process.Start() в MyCommand блокировать другие потоки.C# Несколько одновременных System.Diagnostics.Process

+0

Являются ли эти длительные процессы, которые могут вызвать фатальное исключение? Если нет, я бы не пошел с процессом. Проверьте параллельную библиотеку задач в MSDN. – IAbstract

+1

Что-то не так с вашим кодом. Однако мы не можем сказать, что не так, не видя * ваш код. –

+0

В этом процессе я запускаю исполняемый файл, который расшифровывает файл, поэтому каждый поток расшифровывает другой файл. Программа расшифровки завершается. Я распечатываю его вывод. Программа дешифрования скомпилирована из источников C++. Но, основываясь на других ответах, кажется, что это может иметь какое-то отношение к самой программе. Итак, в моей форме я начинаю работу с фоновым работником с помощью нажатия кнопки, которая выполняет выполнение до DoWork. В этом методе я запускаю поток с помощью пула потоков, используя пример, приведенный в следующей статье: http://msdn.microsoft.com/en-us/library/3dasc8as%28v=vs.80%29.aspx – udeleng

ответ

1

No Process.Start не блокирует. Однако приложение, которое вы запускаете, может. Например, если он использовал мьютекс, чтобы убедиться, что только один экземпляр был запущен за один раз.

1

Ответ прост: нет, запуск процесса не блокирует другие потоки.

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