我有一个c#程序,通过它我打开cmd窗口作为一个过程。在这个命令窗口中我正在运行一个批处理文件。我将该批处理文件命令的输出重定向到文本文件。当我运行我的应用程序时,一切似乎都没有问题。Java和.net的互操作性
但很少有时候,应用程序出现一些错误,如“无法访问该文件,正在被另一应用程序使用”,同时cmd窗口未关闭。如果我们通过任务管理器关闭cmd进程,那么它会将内容写入文件并关闭。即使我关闭了cmd进程,仍然无法释放文件句柄。所以我无法在下一次运行应用程序。总是说无法访问文件。只有重新启动系统后,它才能正常工作。
这里是我的代码:
Process objProcess = new Process();
ProcessStartInfo objProInfo = new ProcessStartInfo();
objProInfo.WindowStyle = ProcessWindowStyle.Maximized;
objProInfo.UseShellExecute = true;
objProInfo.FileName = "Batch file path"
objProInfo.Arguments = "Some Arguments";
if (Directory.Exists(strOutputPath) == false)
{
Directory.CreateDirectory(strOutputPath);
}
objProInfo.CreateNoWindow = false;
objProcess.StartInfo = objProInfo;
objProcess.Start();
objProcess.WaitForExit();
下的test.bat:
java classname argument > output.txt
这里是我的问题:
我不能追踪问题的所在。 。
何我们可以看到在ant文件上持有句柄的过程。
是否有Java和.NET互操作有什么建议
非常感谢...尽管它没有直接解决我的问题,但它帮助我确定了根本原因。 – Dinesh 2010-04-26 09:02:25
那么问题是什么呢?我很好奇:) – 2010-04-26 09:18:32