如果我在这里做错了,我很抱歉,这是我在本网站的第一个问题。
当BeginConnect抛出错误(主要是SocketException)时,我试图完全退出我的应用程序(进程)。
我的代码现在:
extension_dir = "/Applications/MAMP/bin/php/php5.6.10/lib/php/extensions/no-debug-non-zts-20131226/"
ErrorEvent触发,这是我尝试退出应用程序的地方:
try
{
Socket.BeginConnect(new IPEndPoint(IPAddress.Parse(ip), port), new AsyncCallback(ConnectionCallBack), Socket);
}
catch (System.Exception ex)
{
OnError(new ErrorEventArgs(ex));
}
但是,然后,调试模式仍在运行..或者如果我在没有调试模式的情况下尝试它,我发现任务管理器中的进程仍然存在。
感谢您的帮助!
答案 0 :(得分:0)
我怀疑你的问题是主进程在退出之前还在等待其子线程关闭。尝试使用Close()
api关闭套接字连接,让线程正常关闭并查看主进程是否退出。
或者你可以做System.Environment.Exit(1)
,但这是一种杀死应用程序的野蛮方式。你通常不必这样做,但如果你必须使用它。
https://msdn.microsoft.com/en-us/library/system.environment.exit(v=vs.110).aspx
Environment.Exit方法(Int32)
.NET Framework(当前版本)其他版本终止此操作 处理并将退出代码返回给操作系统。
示例:
enum ExitCode : int {
Success = 0,
ForceTermination = 1,
SocketException = 2
}
System.Environment.Exit(ExitCode.ForceTerminate);