Запуск исполняемого файла из нескольких потоков через Process.Start()

#c# #.net #multithreading #executable #process.start

#c# #.net #многопоточность #исполняемый файл #process.start

Вопрос:

Я использую «7z.exe «чтобы выполнить некоторую дополнительную работу в моем приложении (c #).Я встроил «7z.exe » в основном исполняемом файле моего приложения в виде файла ресурсов. Во время выполнения моего приложения я извлекаю «7z.exe «на жестком диске и выполнить его через Process.Start().

Мне нужно выполнить «7z.exe » несколько раз и из нескольких потоков. Безопасно ли обращаться к тому же «7z.exe «файл из нескольких потоков? или я должен извлечь отдельный «7z.exe» (в другое место на жестком диске) для каждого процесса.Start()

PS:7z.exe принадлежит программному обеспечению Seven-zip, написанному на c / c .

Комментарии:

1. В дополнение к приведенному ниже ответу Джона, встраивание исполняемых файлов в ваше приложение в качестве ресурса и последующее извлечение их позже вряд ли когда-либо является правильным подходом. В частности, это, вероятно, сведет с ума антивирусный сканер. Намного лучшим вариантом является использование ZIP-библиотеки, предназначенной для использования с C # (например, SharpZipLib).

Ответ №1:

Да, вы должны иметь возможность запускать несколько процессов из одного и того же исполняемого файла — при условии, что процесс сам ничего не делает, чтобы предотвратить это (что возможно — вам пришлось бы проверить наличие 7-zip). Вы определенно не можете делать то, что хотите, используя zip-библиотеку, такую как SharpZipLib?

Комментарии:

1. В SharpZipLib мне все еще нужно включить «7z.dll «. итак, в чем преимущество использования SharpZipLib. Я все еще должен извлечь 7z.dll .

2. @BitsnBytes: Использует ли SharpZipLib 7z.dll ? Я не знал об этом. Но преимущество было бы в том, что проще управлять кодом в рамках одного процесса, чем запускать несколько процессов.

3. учитывая 7z.exe разрешает одновременные вызовы из нескольких потоков. Могу ли я предположить, что 7z.exe никогда не будет заблокирован и разрешит выполнение из других потоков.

4. @BitsnBytes: Вы бы не запускали несколько потоков — вы запускаете несколько процессов . Этим сложнее управлять, IMO. Да, это, вероятно, будет выполняться нормально, но очистка и т.д. Будет сложнее справиться.

Ответ №2:

Да, безопасно запускать один и тот же exe-файл из разных процессов / потоков.