Process p = new Process(); "0L!rxzH
p.StartInfo.FileName = "cmd.exe"; v?pGi2?"iJ
p.StartInfo.UseShellExecute = true; 7&PFWN
p.StartInfo.RedirectStandardInput = true; $27N8@-d{)
p.StartInfo.RedirectStandardOutput = true; I"/ _XL6
p.StartInfo.RedirectStandardError = true; 8]:G@tAb
p.EnableRaisingEvents = true; S 1b 'z%v
p.StartInfo.CreateNoWindow = true; O.vW_XWc
?^EQ4x&a J
try @q8F0s3GI
{ <mX4$K8
)& `TWX
p.Start(); 6C$#cI6tn
p.StandardInput.WriteLine(strexp); }w4z+n.f
p.StandardInput.WriteLine("exit"); i=!F1\}?
kfV5>
p.WaitForExit(); #N?RM{Z
str = "数据库备份成功!"; *M|53lQ$J
MessageBox.Show(str, "消息", MessageBoxButtons.OK, MessageBoxIcon.Information); )9IG=;EkFt
%{n'K*
} QLy7u
catch (Exception err) wpVR[{=A1o
{ cuYH\F gq
throw (new Exception("备份数据库失败!" + err.Message)); _Cy_d'RA
} iF0Y nTAV
finally P(e.?q.
{ Z#s>q|\0
p.Close(); B3J_v*5#00
} oUf|HV"&w
=vGi6
ImBFtHXYo
} 2e@i"Z!
EE'hD>]<H
1P j-)Yqp
9-Ul'S`2
有个问题:当没有p.WaitForExit();这个语句的时候,C#程序可以引发cmd命令,直接弹出“备份完毕”的box。但后台备份文件还在写入。备份的数据库文件115兆之大。我想做的是在等数据备份完毕才执行下一“备份完毕”的命令。当我加上p.WaitForExit();时。至备份了一点就卡住了,不知是不是死锁还是怎么。存放备份的文件不在写入。只有等我停止调试后,才慢慢的写入。这个写入过程需要两分钟之多。请高手给解释一下,该怎么做?
查看本文来源