Comment obtenir efficace Sql Server blocage de manutention en C# avec ADO?

J'ai une classe "Base de données" qui fonctionne comme un wrapper pour ADO.net. Par exemple, quand j'en ai besoin pour exécuter une procédure, je l'appelle la Base de données.ExecuteProcedure(nom de procédure, parametersAndItsValues).

Nous connaissent de graves problèmes avec les situations de Blocage dans SQL Server 2000. Une partie de notre équipe est de travailler sur le code sql et des opérations afin de minimiser ces événements, mais je pense à faire de cette classe de Base de données solide pour faire face à des situations de blocage.

Nous voulons que la victime du blocage de réessayer peut-être après un certain temps de retard, mais je ne sais pas si c'est possible. Voici le code d'une méthode que nous utilisons:

public int ExecuteQuery(string query)
{
    int rows = 0;

    try
    {
        Command.Connection = Connection;
        Command.CommandType = CommandType.Text;

        if(DatabaseType != enumDatabaseType.ORACLE)
          Command.CommandText = query;
        else
          Command.CommandText ="BEGIN " +  query + " END;";



        if (DatabaseType != enumDatabaseType.SQLCOMPACT)
            Command.CommandTimeout = Connection.ConnectionTimeout;

        if (Connection.State == ConnectionState.Closed)
            Connection.Open();

        rows = Command.ExecuteNonQuery();
    }
    catch (Exception exp)
    {
        //Could I add here any code to handle it?
        throw new Exception(exp.Message);
    }
    finally
    {
        if (Command.Transaction == null)
        {
            Connection.Close();
            _connection.Dispose();
            _connection = null;
            Command.Dispose();
            Command = null;
        }
    }
    return rows;
}

Puis-je faire cette manipulation à l'intérieur d'un bloc catch?