我有一个问题,我的代码在调用 Dll 中的 LogIn 函数以连接到服务器上的应用程序时冻结,但它不会经常发生。这只发生在我登录并且有一个连接之后尝试没有连接的情况下,该尝试在超时之前重新连接(反复尝试登录),然后再次尝试登录,此时它永远位于对 Dll 的函数调用中。一旦从服务器获得所需的数据,每个 LogIn 后面都会有一个 LogOut。这是引入Dll函数的方式:
[DllImport("SafeComDLLs\\scApi.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.Cdecl)]
private static extern int sc_LoginByLogon(string szlpAddr,string szuserLogon,string szPassword);
这是我用来连接服务器的代码:
public int LogIn(string ipAddress, string userName, string password)
{
int result = -1;
try
{
result = sc_LoginByLogon(ipAddress, userName, password);
if (result == 0)
_log.Info("Log in Success");
else
_log.Error("Log in failed, error message : " + result.ToString());
}
catch (Exception e)
{
_log.Error("sc_LoginByLogon failed with exception : " + e.Message);
}
return result;
}
如您所见,我捕获了异常,但是没有抛出异常,并且代码仅位于此部分:
result = sc_LoginByLogon(ipAddress, userName, password);