示例#1
0
        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);
                }
            }
        }
示例#2
0
        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));
            }
        }