我遇到一个问题,我的代码在调用连接到服务器上的应用程序的Dll中调用LogIn函数时会冻结但不会经常发生。这仅在我登录时发生,并且在没有连接的情况下进行连接,然后在超时之前重新连接(重复尝试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);