我在winfrom里调用一个process,process执行一个console程序,叫val.exe。(这个exe会执行一个操作,然后会写一个log。)代码如下:
p.StartInfo.FileName = "val.exe";
p.StartInfo.Arguments = val+ " " + darice + " " + " -l " + logName;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true; p.Start();
p.WaitForExit();//走到此处,程序似乎就陷入了死锁的状态。
val.exe始终存在于process中。
另,这段代码在一个console app里执行是正常的p.WaitForExit()也可以正常响应。
val.exe在cmd里执行也是正常的,写完log之后process就会自动kill。
请教。。why
p.StartInfo.FileName = "val.exe";
p.StartInfo.Arguments = val+ " " + darice + " " + " -l " + logName;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true; p.Start();
p.WaitForExit();//走到此处,程序似乎就陷入了死锁的状态。
val.exe始终存在于process中。
另,这段代码在一个console app里执行是正常的p.WaitForExit()也可以正常响应。
val.exe在cmd里执行也是正常的,写完log之后process就会自动kill。
请教。。why
解决方案 »
- C# 怎样读取XML文件中的指定值
- winfrom 如何用一台电脑控制多台打印机
- 怎么让iframe自动调整大小啊???
- 如何监测 backgroundWorker的DoWork()已经死掉或意外退出了?
- 如何实现类似输入法的软键盘?
- 加载了dll的窗体后,退出主程序后报错内存错,怎么办??
- 非常奇怪!!!
- 请问怎样在另一个form中加入processbar,来演示前一个form的运行情况?
- 做报表设计器用什么表格控件较好?
- C# mvc 怎么通过一个字段的值获取它的链接,并将数据库中isread属性改为1(表示已读)
- 我调用模板的页面包含一个自定义控件,自定义控件里有 DropDownList1,表单提交后怎么也得不到DropDownList1的值?
- asp.net gridview 与 dropdownlist问题
{
string dos_cmd="netsh interface ip set address \"本地连接\" static "+ip+" 255.255.255.0";
Process p=new Process();
p.StartInfo.FileName="cmd.exe";
p.StartInfo.UseShellExecute=false;
p.StartInfo.RedirectStandardInput=true;
p.StartInfo.CreateNoWindow=true;
p.Start();
p.StandardInput.WriteLine(dos_cmd.ToString());
p.StandardInput.WriteLine("exit");
p.Close();
}这个是我以前写的一个修改ip地址的,希望能够对LZ有用.
或者去掉waitforexit()Thread t=new Thread(new ThreadStart(run)).Start();public void run()
{
p.StartInfo.FileName = "val.exe";
p.StartInfo.Arguments = val+ " " + darice + " " + " -l " + logName;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true; p.Start();
p.WaitForExit();//
}