C# 到DB2的ODBC连接挂起

C# 到DB2的ODBC连接挂起,c#,odbc,db2,C#,Odbc,Db2,我有一个函数,用于通过ODBC将写查询发送到DB2,如果我失去与DB2的连接,它会不时挂起。我向函数发送60作为超时,但它从未超时。它只是无限期地挂起我的线程,我不确定是否有好的方法来强制放弃这个函数 public int WriteQuery(string query, string dbConnStr, int timeout) { int rowsAffected = -1; OdbcConnection conn = new OdbcConnection(dbConnSt

我有一个函数,用于通过ODBC将写查询发送到DB2,如果我失去与DB2的连接,它会不时挂起。我向函数发送60作为超时,但它从未超时。它只是无限期地挂起我的线程,我不确定是否有好的方法来强制放弃这个函数

public int WriteQuery(string query, string dbConnStr, int timeout)
{
    int rowsAffected = -1;
    OdbcConnection conn = new OdbcConnection(dbConnStr);

    try
    {
            conn.Open();
            OdbcCommand command = new OdbcCommand(query, conn);
            command.CommandTimeout = timeout;

            OdbcTransaction trans = conn.BeginTransaction();
            command.Transaction = trans;

            OdbcDataAdapter adapter = new OdbcDataAdapter(command);
            adapter.UpdateCommand = command;

            rowsAffected = command.ExecuteNonQuery();
            trans.Commit();
        }
        catch(Exception)
        {
            throw;
        }
        finally
        {
            conn.Close();
            conn.Dispose();
        }

        return rowsAffected;
    }
}

无论如何,您是在用相同的方法打开和关闭连接。 尝试使用:OdbcConnection.ConnectionTimeout=60


希望这有帮助

无论如何,您是在用相同的方法打开和关闭连接。 尝试使用:OdbcConnection.ConnectionTimeout=60


希望这有帮助

你知道哪句话挂断了吗?我没有看到任何类型的日志语句,因此我猜您不确定,除非您在调试器中遍历代码时看到这种情况。您知道哪条语句被挂起了吗?我没有看到任何类型的日志语句,因此我猜您不确定,除非您在调试器中遍历代码时看到这种情况。