我有一个.NET项目,我用Visual Studio编译并在Windows上成功运行多年。我想转而使用Mac OS X来运行这个特定的程序,所以一直使用单声道工作一段时间就可以实现。结果非常好,程序在mono(2.10.9,BTW)下按预期执行。
唯一的障碍是程序在完成后不会退出。它是一个单线程进程,但是当它的工作完成时(它在Main(string[])
方法结束时报告),进程不会退出;需要^C
才能返回shell提示符。在最后添加明确的System.Environment.Exit(exitCode);
调用无效。
我在几年前发现了另外一个关于这类问题的故事here,尽管ML线程没有提供任何可能的解决方案。
答案 0 :(得分:0)
我在这个应用程序中使用IKVM,并且在某些情况下需要在vm shutdown时启动一个线程来清理它的JVM< - > CLR互操作机器;这显然不适合单声道(但总是在.NET中工作)。
IKVM的作者在a thread on the IKVM dev list上发现了这一点,他为this bug提交了单声道项目。
我的解决方法是明确调用java.lang.System.exit(exitCode)
,而不是简单地让程序自然终止或使用System.Environment.Exit(exitCode)
。这允许IKVM在vm终止生命周期之外关闭,从而避免单声道错误。