/// <summary>Hit when we're finished updating the main information.</summary>
        /// <param name="sender">ImportExportClient</param>
        /// <param name="e">AsyncCompletedEventArgs</param>
        private void clientSave_Incident_UpdateCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
        {
            try
            {
                const string METHOD = CLASS + "clientSave_Incident_UpdateCompleted()";
                Logger.LogTrace(METHOD + " Enter: " + this._clientNumSaving.ToString() + " running.");

                ImportExportClient client = (sender as ImportExportClient);
                this._clientNumSaving--;
                this.barSavingIncident.Value++;

                if (!e.Cancelled)
                {
                    if (e.Error == null)
                    {
                        //See if we need to add a resolution.
                        if (this._isResChanged)
                        {
                            //We need to save a resolution.
                            RemoteComment newRes = new RemoteComment();
                            newRes.CreationDate = DateTime.Now.ToUniversalTime();
                            newRes.UserId       = ((SpiraProject)this._ArtifactDetails.ArtifactParentProject.ArtifactTag).UserID;
                            newRes.ArtifactId   = this._ArtifactDetails.ArtifactId;
                            newRes.Text         = this.cntrlResolution.HTMLText;

                            this._clientNumSaving++;
                            client.Incident_AddCommentsAsync(new List <RemoteComment>()
                            {
                                newRes
                            }, this._clientNum++);
                        }
                        else
                        {
                            //We're finished.
                            this.barSavingIncident.Value++;
                            this._clientNumSaving++;
                            client.Connection_DisconnectAsync(this._clientNum++);
                        }
                    }
                    else
                    {
                        //Log error.
                        Logger.LogMessage(e.Error, "Saving Incident Changes to Database");

                        //If we get a concurrency error, get the current data.
                        if (e.Error is FaultException <ServiceFaultMessage> && ((FaultException <ServiceFaultMessage>)e.Error).Detail.Type == "DataAccessConcurrencyException")
                        {
                            client.Incident_RetrieveByIdCompleted += new EventHandler <Incident_RetrieveByIdCompletedEventArgs>(clientSave_Incident_RetrieveByIdCompleted);

                            //Fire it off.
                            this._clientNumSaving++;
                            client.Incident_RetrieveByIdAsync(this._ArtifactDetails.ArtifactId, this._clientNum++);
                        }
                        else
                        {
                            //Display the error screen here.

                            //Cancel calls.
                            this._clientNumSaving++;
                            client.Connection_DisconnectAsync(this._clientNum++);
                        }
                    }
                }

                //See if it's okay to reload.
                this.save_CheckIfOkayToLoad();

                Logger.LogTrace(METHOD + " Exit: " + this._clientNumSaving.ToString() + " left.");
            }
            catch (Exception ex)
            {
                Logger.LogMessage(ex, "clientSave_Incident_UpdateCompleted()");
                MessageBox.Show(StaticFuncs.getCultureResource.GetString("app_General_UnexpectedError"), StaticFuncs.getCultureResource.GetString("app_General_ApplicationShortName"), MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }