¿Cómo limpio SqlDependency de la memoria de SQL Server?

¿Cómo limpio SQL Server para deshacerme de @ expiradSqlDependency ¿objetos? Después de recibir el evento deSqlDepedency objeto, necesito crear uno nuevo antes de poder obtener un nuevo evento. Sin embargo, el uso de la memoria del proceso de SQL Server aumenta hasta que se agota la memoria permitida (SQL Server Express). ¿Cómo me deshago de las consultas antiguas?

Código

// Func: RegisterTableListener
using (SqlConnection cn = new SqlConnection(Properties.Settings.Default.DatabseEventConnectionString))
{
if (cmd == null)
{
    cmd = cn.CreateCommand();

    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "SELECT HostName, LastStatus, LastDetails, xml FROM dbo.[SystemTable]";
}

lock (cmd)
{
    cmd.Connection = cn;
    cn.Open();
    cmd.Notification = null;

    //  creates a new dependency for the SqlCommand
    if (dep == null)
        dep = new SqlDependency(cmd);
    //  creates an event handler for the notification of data
    //      changes in the database.
    dep.OnChange += new OnChangeEventHandler(dependency_OnChange);


    using (SqlDataReader reader = cmd.ExecuteReader())
    {
    // code here to read
    }
}
}

// Func dependency_OnChange
//SqlDependency dep = sender as SqlDependency;
dep.OnChange -= dependency_OnChange;
RegisterTableListener();

Respuestas a la pregunta(4)

Su respuesta a la pregunta