一个简单的设计问题

加入
2015年6月3日
消息
6
编程经验
Beginner
我有一个脚本将递归搜索文件夹,并且对于它发现的每个模型和纹理映射,将执行另一个脚本以将此文件从一种格式转换为另一个格式。我正在使用ProcessStartInfo类来启动此其他程序并通过递归脚本的参数。我以为它正在运作好,但在测试中(许多不同的场景),我发现它现在一直挂断挂断。

这是通过递归函数调用其他程序的坏主意吗?每次我运行脚本时它都会在没有实际完成一次的情况下执行2-3个processtartinfo,然后挂起并切勿处理转换。
 
Last edited:

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,720
地点
悉尼,澳大利亚
编程经验
10+
首先,要迂腐,没有脚本。 C#不是脚本语言所以C#代码不是脚本。这只是代码。

其次,您实际上使用进程类来运行外部工具。 ProcessStartInfo只是告诉进程类如何启动。

至于您的问题,很难诊断这样的问题,而无需访问该工具,但我的猜测就是其他程序不喜欢在同一时间运行多个实例。您可以做什么添加到队列中发现的所有项目,然后将这些项目摘掉队列并一次处理一个,因此只有一个工具实例一次一次运行。它需要更长时间,但你将避免像争论共同资源的争论。
 
加入
2015年6月3日
消息
6
编程经验
Beginner
感谢您的回复。我最终得到了它的工作,但通过一些意外的方法。我有几个问题;一个人是我打电话的process.start()两次(当我在构建新进程时一次),并在它下面的一行上。我早先赶上这个并摆脱了重复的实例。即使是这个过程的单一实例,仍然没有转换......我注释出了我的代码.createNowindow,.useShellexecute,.redirectRestandErtuper和.redirectStandardOutput属性并添加.windowstyle属性。出于某种原因,显示窗口允许其他进程运行/完成并立即运行。
 
最佳 底部