La suscripción a la SqlDependency no funciona cuando se usa IsolationLevel.ReadUncommitted in (no relacionado?) Transaction

Me las arreglé para hacer que SqlDependency funcione, pero solo mientras no lo useIsolationLevel.ReadUncommited en lo que pensé que era una transacción SQL no relacionada con la Dependencia Sql.

Cuando yo usoIsolationLevel.ReadUncommitted en la transacción (fuertemente comentada a continuación), la suscripción a SqlDependency falla con una inmediataOnChange notificación de:

sqlNotificationEventArgs.Info = "Isolation";
sqlNotificationEventArgs.Source = "Statement";
sqlNotificationEventArgs.Type = "Subscribe";

Cuando elimino IsolationLevel, todo funciona como se espera (bueno, el aislamiento no es correcto, por supuesto).

Aquí está mi código relevante:

private static string connString = "the connection string";
[MTAThread]
private static void Main(string[] args)
    while(true)
    {
        using (var context = new LinqDataContext(connString))
        {
            var conn = context.Connection;
            conn.Open();
            /***********************************************************************/
            /* Remove `IsolationLevel.ReadUncommitted` and the SqlDependency works */
            /***********************************************************************/
            using (var trans = conn.BeginTransaction(IsolationLevel.ReadUncommitted))
            {
                // simplified query, the real query uses UPDATE OUTPUT INSERTED
                const string sqlCommand = "SELECT [Columns] FROM dbo.[TABLE] WHERE [Status] = 'ready'";
                results = conn.Query({transaction: trans, sql: sqlCommand});
                trans.Commit();
            }
            DoAwesomeStuffWithTheResults(results, context);
        }
        WaitForWork();
    }
}

El código relacionado con SqlDependency:

private static ManualResetEvent _quitEvent = new ManualResetEvent(false);

/// <summary>
/// Sets up a SqlDependency a doesn't return until it receives a Change notification
/// </summary>
private static void WaitForWork(){
    // in case we have dependency running we need to go a head and stop it first. 
    SqlDependency.Stop(connString);
    SqlDependency.Start(connString);

    using (var conn = new SqlConnection(connString))
    {
        using (var cmd = new SqlCommand("SELECT [Status] From dbo.[TABLE]", conn))
        {
            cmd.Notification = null;

            var dependency = new SqlDependency(cmd);
            dependency.OnChange += dependency_OnDataChangedDelegate;

            conn.Open();

            cmd.ExecuteReader();
        }
    }
    _quitEvent.WaitOne();
    SqlDependency.Stop(connString);
}
private static void dependency_OnDataChangedDelegate(object sender, SqlNotificationEventArgs e)
{
    ((SqlDependency)sender).OnChange -= dependency_OnDataChangedDelegate;
    _quitEvent.Set();
}

Me siento como si hubiera eliminado adecuadamente el contexto, su conexión y la transacción, antes de configurar la dependencia de SQL, pero parece que ese no es el caso.

¿Qué estoy haciendo mal aquí?

Respuestas a la pregunta(2)

Su respuesta a la pregunta