问题描述
我现在做的一个程序包括两个应用程序,app1和app2。app1中需要启动app2,而且需要给app2传参数。app1中代码如下:System.Diagnostics.ProcessStartInfopsi=newSystem.Diagnostics.ProcessStartInfo(strApp2Name,strArguments);psi.RedirectStandardOutput=true;psi.WindowStyle=System.Diagnostics.ProcessWindowStyle.Normal;psi.UseShellExecute=false;System.Diagnostics.ProcesssubPro;subPro=System.Diagnostics.Process.Start(psi);其中strArguments为传递的参数,以空格分隔。大约5000个参数,但在app2的Main(string[]args)函数中,发现被传入的参数只有1500个左右。不知道是怎么回事。是有什么限制么?可我查了些资料,都说应该没有限制,即使有我这点参数也应该没有到限。这个问题很急,希望各位帮帮忙了,在这先谢谢了。
解决方案
解决方案二:
.NETFramework类库ProcessStartInfo.Arguments属性.NETFramework应用程序和.NETCompactFramework应用程序中的最大字符串长度分别为2,003字符和488字符。
解决方案三:
不同进程之间传递参数可以通过管道共享内存remoting交换文件等等用参数在你的情况下不合适
解决方案四:
那么长还是写成一个文件,把文件名传进去。再解析文件就可以了。那就不会超长了。
解决方案五:
app1把参数写到一个临时XML文件,然后把文件名传给app2,app2用完该临时文件后把文件删除。这是最简单的、而且保险的。虽然不是最高效的。
解决方案六:
谢谢jiatong1981的回复。但我还是不太清楚。你的意思是只能传2003个参数么,还是参数的长度最大2003?我现在的情况是,app1中strArguments空格分隔后的个数是5000多个,正确传入app2的参数个数为1500左右。而这1500个参数的总字符长度大概10000。每个参数的最大长度只有20左右。
解决方案七:
谢谢大家的回复,写临时文件这种方法我也想过,但开始时,测试没遇到这么多参数的情况,而且主要也考虑到效率问题。其实改成临时文件没有什么太大问题,只是不太了解传参限制这方面的知识,所以还请了解这方面知识的朋友多多帮忙了。谢谢了。
解决方案八:
解决方法ls都有启动参数这么多还是用别的方法吧XML就不错启动参数是有长度限制的MSDN上注明了是2003个字符
解决方案:
他的这个参数只是一个字符串。