Exemplo n.º 1
0
        private void wcf_ClientUpdateIssuesCompleted(IAsyncResult ar)
        {
            Exception ex = new Exception("Async update completed normally", null);

            try
            {
                WCF.UpdateIssuesResponse rs = ((WCF.IssuesContractClient)ar.AsyncState).EndUpdateIssues(ar);
            }
            catch (Exception x)
            {
                ex = new Exception(x.Message, x.InnerException);
            }

            PrepareDataAfterUpdate();
            ClientUpdateIssuesCompleted(this, new AsyncCompletedEventArgs(ex, false, null));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Client callable code to Delete/Insert/Update Issues
        /// </summary>
        /// <returns>True if update is successful. If False, check for RowErrors.</returns>
        public bool ClientUpdateIssues(bool async)
        {
            PrepareDataBeforeUpdate();

            IssuesCD updatedIssues = new IssuesCD();

            updatedIssues.Merge(Tables["Issues"].Select("", "", DataViewRowState.Deleted), false, MissingSchemaAction.Ignore);
            updatedIssues.Merge(Tables["Issues"].Select("", "", DataViewRowState.Added), false, MissingSchemaAction.Ignore);
            updatedIssues.Merge(Tables["Issues"].Select("", "", DataViewRowState.ModifiedCurrent), false, MissingSchemaAction.Ignore);

            if (updatedIssues.Issues.Rows.Count > 0)
            {
                if (UseWcfService)
                {
                    try
                    {
                        WCF.IssuesContractClient svWCF = new WCF.IssuesContractClient();
                        WCF.UpdateIssuesRequest  rqWCF = new WCF.UpdateIssuesRequest();
                        rqWCF.IssuesCD = new IssuesServiceWCF.IssuesCD();
                        rqWCF.IssuesCD.Merge(updatedIssues, false, MissingSchemaAction.Ignore);

                        if (async)
                        {
                            string ping = svWCF.Ping();
                            if (String.IsNullOrEmpty(ping))
                            {
                                throw new Exception("WCF is offline.");
                            }
                            svWCF.BeginUpdateIssues(rqWCF, wcf_ClientUpdateIssuesCompleted, svWCF);
                            return(true);
                        }
                        else
                        {
                            WCF.UpdateIssuesResponse rsWCF = svWCF.UpdateIssues(rqWCF);
                            Merge(rsWCF.IssuesCD, false, MissingSchemaAction.Ignore);
                            PrepareDataAfterUpdate();
                            return(true);
                        }
                    }
                    catch { UseWcfService = false; }                     // ignore if not responding
                }
                if (UseAsmxService)
                {
                    try
                    {
                        ASMX.IssuesServiceASMX   svASMX = new ASMX.IssuesServiceASMX();
                        ASMX.UpdateIssuesRequest rqASMX = new ASMX.UpdateIssuesRequest();
                        rqASMX.IssuesCD = new IssuesServiceASMX.IssuesCD();
                        rqASMX.IssuesCD.Merge(updatedIssues, false, MissingSchemaAction.Ignore);

                        if (async)
                        {
                            svASMX.UpdateIssuesCompleted += asmx_ClientUpdateIssuesCompleted;
                            svASMX.UpdateIssuesAsync(rqASMX);
                            return(true);
                        }
                        else
                        {
                            ASMX.UpdateIssuesResponse rsASMX = svASMX.UpdateIssues(rqASMX);
                            Merge(rsASMX.IssuesCD, false, MissingSchemaAction.Ignore);
                            PrepareDataAfterUpdate();
                            return(true);
                        }
                    }
                    catch { UseAsmxService = false; }                     // ignore if not responding
                }
                if (UseClientServer)
                {
                    try
                    {
                        Merge(UpdateIssues(updatedIssues), false, MissingSchemaAction.Ignore);
                        PrepareDataAfterUpdate();
                        return(true);
                    }
                    catch { UseClientServer = false; }                     // ignore if not responding
                }
            }

            return(false);
        }