Вот функция, которая вызывает Process.Start()
.
Я просто открываю две папки в WinMerge. Эта часть работает правильно и выскакивает это приложение. Однако ни один из написанного после этого кода не выполняется. Однако, когда я помещаю точку останова на p.Dispose()
или p.Start()
и нажимаю «продолжить», все после этого работает правильно.
private void openWinMerge(string leftFile, string rightFile)
{
string args = "/C /f *.xml " + leftFile + " " + rightFile;
Process p = new Process();
p.StartInfo.FileName = "C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe";
p.StartInfo.Arguments = args;
p.StartInfo.CreateNoWindow = true;
if (p.Start())
{
p.Dispose();
return;
}
}
Здесь я вызываю функцию, вызывающую Process.Start()
. Ни один из приведенных ниже кодов openWinMerge()
не запускается.
private void btnStart_Click(object sender, EventArgs e)
{
if (txtSerial.Text.Length == 9)
{
PO.Number = txtSerial.Text.ToUpper();
PO.SerialSearch = true;
if (PO.Search())
{
txtPO.Text = PO.Field.ProductionOrderNumber;
search();
createFolders();
copyDefaultFiles();
copyBackupFiles();
openWinMerge("\"" + Path.Combine(path, "INITIAL") + "\"", "\"" + Path.Combine(path, "Default") + "\"");
copyFinalXML();
return;
}
MessageBox.Show("Invalid Serial");
} else if (txtPO.Text.Length == 12)
{
PO.Number = txtPO.Text.ToUpper();
if (PO.Search())
{
txtSerial.Text = PO.Field.SerialNumber;
search();
createFolders();
copyDefaultFiles();
copyBackupFiles();
openWinMerge("\"" + Path.Combine(path, "INITIAL") + "\"", "\"" + Path.Combine(path, "Default") + "\"");
copyFinalXML();
return;
}
MessageBox.Show("Invalid PO or Missing Serial");
} else
{
MessageBox.Show("Please Enter either Serial or PO of Analyzer");
}
}
Обновление:
Я написал другой код ниже openWinMerge()
, и он запускается, поэтому моя проблема in copyFinalXML()
Вот код для этого
private void copyFinalXML()
{
try
{
string[] files = Directory.GetFiles(Path.Combine(path,"INITIAL"));
Task.Delay(200);
foreach (string file in files)
{
// Will not overwrite if the destination file already exists.
string[] folders = file.Split('\\');
string filename = folders[folders.Length - 1];
if (filename.Equals("config.xml") || filename.Equals("service.xml") || filename.Equals("system.xml"))
{
string d = Path.Combine(Path.Combine(path, "FINAL"), filename);
File.Copy(file, d);
Task.Delay(500);
openNotePad(d);
}
}
}
// Catch exception if the file was already copied.
catch (IOException copyError)
{
MessageBox.Show(copyError.Message);
}
}
private void openNotePad(string filename)
{
//Process.Start("C:\\Program Files(x86)\\Notepad++\\notepad++.exe", "\"" + filename + "\"");
Process.Start(@"notepad++.exe", "\"" + filename + "\"");
return;
}