急!急!急!急!帮我看看代码!! 在线等~~~~

zzgfly 2005-01-03 02:18:08
程序运行到这个函数 就失去响应 得不到返回值
在 任务管理器 中可以看一个cmd.exe 一直不能结束
我手动 把 cmd.exe结了回
程序就得到了响应
这 是怎么回事
帮看看~~~~

public string ToObjFile(string path,string fileName)
{
Process p = new Process ();
p.StartInfo .FileName ="cmd.exe";
p.StartInfo .RedirectStandardError =true;
p.StartInfo .RedirectStandardInput =true;
p.StartInfo .RedirectStandardOutput =true;

p.StartInfo .CreateNoWindow =true;
p.StartInfo .UseShellExecute =false;
p.StartInfo. WorkingDirectory =path.Substring(0,path.LastIndexOf("\\"));
p.Start ();

p.StandardInput .WriteLine(SetPath);
p.StandardInput .WriteLine ("masm.exe" + " " + fileName +",,,; " );
p.StandardInput.WriteLine("exit");
string msg=p.StandardOutput.ReadToEnd();

p.Close();

return msg;
}
...全文
144 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzgfly 2005-01-03
  • 打赏
  • 举报
回复
masm.exe参数 没有写错
当我 手动 结掉 cmd.exe 后 主程序 得到了正确返回值

setpath 是个 所在类的成员
wj2929 2005-01-03
  • 打赏
  • 举报
回复
SetPath??
如果masm.exe的执行参数写错了可能产生问题吗??("masm.exe" + " " + fileName +",,,; ")
xxdneu 2005-01-03
  • 打赏
  • 举报
回复
使用断点跟踪一下,有可能有一个函数把当前线程阻塞了

有可能标准输出把缓存区占满了,所以就阻塞当前线程直到数据被读取,而你读取也是在同一个线程,所以如果前边阻塞的话,根本就无法读取,所以死锁了

建议为读取新建一个线程。
chinaybk 2005-01-03
  • 打赏
  • 举报
回复
关注

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧