private void UIThreadCompletedCallback(object result) {
AssertIsMainThread();
try {
if (_callbackAction != null) {
_callbackAction(result);
}
} catch (Exception ex) {
Debug.Fail(String.Format(CultureInfo.CurrentCulture,
"Background task UI thread callback exception {0}. Inner exception: {1}",
ex.Message, ex.InnerException != null ? ex.InnerException.Message : "(none)"));
}
_taskRunning = false;
_taskDoneEvent.Dispose();
_taskDoneEvent = null;
}