2010-07-26 4 views
2

У меня есть функция, которую я использую для отправки запросов на запись в DB2 через ODBC, и время от времени она зависает в этой функции, если я теряю соединение с DB2. Я отправляю 60 как мой тайм-аут к функции, но это никогда не истекает. Он просто вешает мою нить бесконечно, и я не уверен в хорошем способе заставить эту функцию отказаться.ODBC-соединение с DB2 Hangs

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; 
    } 
} 
+0

Есть ли у вас какие-либо идеи, какое заявление является причиной того, что вы повесили трубку? Я не вижу каких-либо операторов журналов, поэтому я предполагаю, что вы не уверены, если вы не заметили, что это произошло во время прохождения кода в отладчике. –

ответ

0

В любом случае вы открываете и закрываете соединение в том же методе. Попробуйте использовать: OdbcConnection.ConnectionTimeout = 60;

Надеюсь, это поможет!