#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-файл из разных процессов / потоков.