OracleDataAdapter, o método Fill trava, como lidar com terminações / desistências / recortes de conexão?

Eu tenho um programa c # que se conecta a um servidor remoto para consultar dados. Como os dados são muito grandes, a consulta leva cerca de 2 minutos para terminar. Durante essa janela de 2 minutos, a internet caiu. Isso resultou na impossibilidade de o trabalho terminar com o programa preso na rotina de obtenção de dados.

Estabeleceu a conexão, mas durante a consulta de seleção foi cortada. Definir o tempo limite do comando para 30 segundos não funcionou. Preciso que a consulta falhe ao encontrar esse erro, porque o programa pode lidar com falhas, mas não pode ser bloqueado. Obrigado!

UPDATE: código incluído

OracleConnection connection = new OracleConnection(connectionstring);
OracleDataAdapter oracleDataAdapter = new OracleDataAdapter(new OracleCommand(query, connection));
oracleDataAdapter.SelectCommand.CommandTimeout = 30;

  DataSet dataSet = new DataSet();
  try
  {
    oracleDataAdapter.Fill(dataSet, table); //Hangs on this line when connection is lost
    return dataSet;
  }
  catch
  {
    throw;
  }
  finally
  {
    dataSet.Dispose();
    oracleDataAdapter.Dispose();
  }

ATUALIZAÇÃO NOVAMENTE:

O que preciso fazer é lidar com essa situação, porque não quero um processo pendente.

O mais simples seria quando a conexão for perdida, pois o programa lançará um erro. É isso que eu não sei fazer. Presumi que o timeout do comando o corrigisse, mas não o fez.

questionAnswers(3)

yourAnswerToTheQuestion