Here's my process flow:
Create a database connection in a using clause.
Create a SqlDataReader to get data in or out of a using clause.
Close SqlDataReader using clause or call reader.Close().
Close db using clause.
When I execute step 5, an exception is thrown because I no longer hold the lock.
So two questions:
Why does closing the SqlDataReader terminate my lock?
Can I safely omit the call to sp_releaseapplock and rely on the closing of the SqlDataReader to release and clean up that lock?