C# 将字符串列表作为参数传递给控制台应用程序
我需要将字符串列表作为参数传递给控制台应用程序(使用C#开发)。 控制台应用程序通过System.Diagnostics.Process.Start启动,如下所示:C# 将字符串列表作为参数传递给控制台应用程序,c#,windows,parameters,arguments,console-application,C#,Windows,Parameters,Arguments,Console Application,我需要将字符串列表作为参数传递给控制台应用程序(使用C#开发)。 控制台应用程序通过System.Diagnostics.Process.Start启动,如下所示: string fname = "testDoc"; List<string> myList; //initialized elsewhere Process console = Process.Start("Client.exe", "-filename:"+fname+ " -list:"+myList); st
string fname = "testDoc";
List<string> myList; //initialized elsewhere
Process console = Process.Start("Client.exe", "-filename:"+fname+ " -list:"+myList);
string fname=“testDoc”;
列出我的清单//在别处初始化
Process console=Process.Start(“Client.exe”,“-filename:+fname+”-list:+myList);
我怎样才能做到这一点 也许您可以通过以下方式创建列表内容
String.Join(";", myList);
在应用程序中,您可以使用
String.Split(";", receivedParameter);
另一种可能是将列表内容写入一个文件,并仅提供一个文件名作为参数,控制台应用程序必须读入该文件。正在运行
string listValues = String.Join(",", myList.Select(s => String.Format("\"{0}\"", s)).ToArray());
Process console = Process.Start("Client.exe", String.Format("-filename:\"{0}\" -list:{1}", fname, listValues));
Process console = Process.Start("Client.exe", "-filename:" + fname + " -list:" + myList)
将执行myList.ToString()并将转换为:
Client.exe -filename:testDoc -list:System.Collections.Generic.List`1[System.String]
这不是你想要达到的。试一试
Process console = Process.Start("Client.exe", "-filename:" + fname + " -list:" + String.Join(",", myList))
或者类似的东西
更新
当然,你可能需要考虑一些更文明的方法来传递数据到那个过程中。常见的方法包括:
- 数据库
- 文件系统(文件)
- 周转基金
- 数据库中包含表
任务
和列
,输入数据
以及您可能需要的任何其他数据(如某些日期或用户ID)输出数据
- 显示将要处理的数据插入该表的网页
- windows服务重复(每x秒)查询表中未处理的任务,并执行任务(如果有);结果保存在
列中输出数据
- 用户请求时,网页查询给定任务并显示其状态,如果存在,则显示输出数据
随着用户流量的不断增长,这一功能更加强大,扩展性也更好。理想情况下,服务本身会为单独的任务生成工作线程,以利用多个核心。有了这样的体系结构,就有很多方法可以优化性能和监视任务。只是出于好奇。列表中有多少数据(字节长度)?该列表包含格式为“GUID\u fileName.pdf”的文档标题。关于我不知道的字节长度,我应该看看这个,因为标题会有所不同。我问这个问题是因为命令行参数有一个明确的限制length@Steve:限制约为8100个字符,即约200个GUID/文档标题。在我的情况下,这个限制是可以接受的,因此我计划在争论中通过它们。但是谢谢你的留言!好吧,那么,我仍然相信,除了像WCF这样的其他解决方案,最好将所有这些都写在一个文件中。最终,您的最大命令行限制为8191个字符(假设>=winXP)+1个很棒的提示!-控制台应用程序将从web应用程序启动。单独的进程将接收文档名称,并调用Web服务检索它们,并将它们合并到一个唯一的文件中。从web应用程序中,PrintPage.aspx将轮询一个文件夹,在该文件夹中删除生成的文件。考虑到这种情况(许多用户可以决定同时打印),您建议使用哪种方法?可以使用WCF来去除数据库;网页通过WCF调用服务,该服务执行工作并以某种方式(如文件)输出结果,以便网页可以访问它。WCF将使您能够解耦这两个,但所有这些都需要更多的工作才能做好。