public void PostQueryNoReader(Action<Exception> actionOnCompletion) { Exception exception = null; _isAsync = true; SpinWorker.Work(() => { try { QueryNoReader(); _isAsync = false; Dispose(); } catch (Exception e) { exception = e; _isAsync = false; Dispose(); } }, () => { actionOnCompletion(exception); }); }