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

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;
}
...全文
67 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
关注
回复
相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2005-01-03 02:18
社区公告

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