private void SendAdditionalDataAsync(Control control, SendRequestState sendRequestState) { SendRequestCompletedEventArgs e; try { var res = sendRequestState.SendAnonymousReportResult; if (res.Error != null || res.Cancelled) { e = new SendRequestCompletedEventArgs(null, res.Error, res.Cancelled); } else { Response response = res.Result; var errorResponse = response as ErrorResponse; if (errorResponse != null) { throw new Exception(errorResponse.Error); } if (response is NeedReportResponse) { _uploader.SendAdditionalDataCompleted += OnSendAdditionalDataCompleted; _uploader.SendAdditionalDataAsync(response.Context, sendRequestState.GetDetailedExceptionDescription(), sendRequestState); return; } e = new SendRequestCompletedEventArgs(response, null, false); } } catch (Exception ex) { e = new SendRequestCompletedEventArgs(null, ex, false); } if (SendRequestCompleted != null) { if (control != null) { control.BeginInvoke(SendRequestCompleted, new object[] { this, e }); } else { SendRequestCompleted.Invoke(this, e); } } }
private void OnSendAdditionalDataCompleted(object sender, SendAdditionalDataCompletedEventArgs e) { try { if (e.Error != null || e.Cancelled) { SendRequestCompleted?.Invoke(this, new SendRequestCompletedEventArgs(null, e.Error, e.Cancelled)); } Response response = e.Result; if (response is ErrorResponse errorResponse) { throw new Exception(errorResponse.Error); } SendRequestCompleted?.Invoke(this, new SendRequestCompletedEventArgs(response, null, false)); } catch (Exception ex) { SendRequestCompleted?.Invoke(this, new SendRequestCompletedEventArgs(null, ex, false)); } }