/// <summary> /// Stores the given error code and messages, /// releases any blocked threads, /// and invokes the previously given callback. /// </summary> public void Complete(int errorCode, params object[] messages) { result.ErrorCode = errorCode; result.Messages = messages; completed = true; if (callback != null) { try { callback(this); } catch (Exception e) { log.Error(callback.ToString(), e); } } sync.Set(); }