我正在编写一个应用程序,其中有两个对外部程序RichCopy和7zip的调用。这个想法是一旦RichCopy完成,就使用RichCopy将文件和7zip归档并加密文件。我遇到的问题是应用程序不会等待RichCopy在7zip尝试归档它们之前完成移动文件,尽管我正在使用WaitForExit。代码如下:WaitForExit实际上是否等待外部程序完成?
file_copy(groupNumberINT, groupNumber, extFolderPath, scanFolderPath);
encrypt_data(groupNumber, outputFolder);
private void file_copy(int groupNumberINT, string groupNumber, string externalFolder, string scansFolder)
{
if (groupNumberINT < 370)
{
string sourceFolder = "D:\\Test\\Production\\CMSFILE001-Copy\\" + groupNumber;
ProcessStartInfo f001 = new ProcessStartInfo();
f001.FileName = "C:\\Program Files (x86)\\Microsoft Rich Tools\\RichCopy 4.0\\RichCopy.exe"; //Edit in prod
f001.Arguments = sourceFolder + " " + externalFolder;
f001.WindowStyle = ProcessWindowStyle.Normal;
Process f1 = Process.Start(f001);
f1.WaitForExit();
}
}
private void encrypt_data(string groupNumber, string outputDirectory)
{
// Create 7zip encrypted archive
string archiveName = groupNumber + @".7z";
string archiveFolder = @"D:\Test\" + groupNumber;
string outputFile = tbGroupNumber.Text + ".7z";
ProcessStartInfo p = new ProcessStartInfo();
p.FileName = "C:\\Program Files\\7-Zip\\7za.exe";
p.Arguments = "a -mx -mhe -pPassword fileout.7z folder";
p.WindowStyle = ProcessWindowStyle.Maximized;
Process x = Process.Start(p);
x.WaitForExit();
}
所以RichCopy的序幕,但紧接着我看到RichCopy的7zip的闪屏启动归档和加密的空文件夹。有没有我遗失的东西,或者是WaitForExit()方法应该等到进程完成之后才转到下一行代码?
根据文档,它应该等待。如果不调用'encrypt_data','file_copy'是否正常工作?你的文件夹名称是否包含空格? – Henrik 2014-09-23 12:19:35
Try f001.FileName =“\”C:\\ Program Files(x86)\\ Microsoft Rich Tools \\ RichCopy 4.0 \\ RichCopy.exe \“”; //编辑为prod – artm 2014-09-23 12:24:13
@Henrik - file_copy工作正常。我想移动的所有文件都正在移动。 – 2014-09-23 13:46:07