public override void Run() { try { // this used to not release the lock, preventing other threads from obtaining it. Sm.MaybeRefreshBlocking(); } catch (Exception e) { throw new Exception(e.Message, e); } } }