예제 #1
0
        /// <summary>
        /// Accept the changes and and close this form
        /// </summary>
        /// <remarks>If any transaction group or the active transaction is still open
        /// give the user the option to either commit them or roll them back first.</remarks>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void okButton_Click(object sender, EventArgs e)
        {
            //if any transaction or transaction group is not finished, notify user to deal with it
            if (null != m_transaction || null != m_transactionGroup)
            {
                TaskDialogResult dialogResult =
                    TaskDialog.Show("Warning", "Some transaction groups or the active transaction is not committed."
                                    + " Choose Yes to commit them, or No to roll them back.", TaskDialogCommonButtons.Yes | TaskDialogCommonButtons.No | TaskDialogCommonButtons.Cancel);

                if (TaskDialogResult.Cancel == dialogResult)
                {
                    return;
                }
                else if (TaskDialogResult.Yes == dialogResult)
                {
                    if (m_transaction != null && (m_transaction.GetStatus() == TransactionStatus.Started))
                    {
                        m_transaction.Commit();
                    }
                    HandleNestedTransactionGroups(OperationType.CommitTransactionGroup);
                }
                else
                {
                    if (m_transaction != null && (m_transaction.GetStatus() == TransactionStatus.Started))
                    {
                        m_transaction.RollBack();
                    }
                    HandleNestedTransactionGroups(OperationType.RollbackTransactionGroup);
                }
            }

            // silently commit the main (hidden) transaction group
            if ((null != m_mainTtransactionGroup) && (m_mainTtransactionGroup.GetStatus() == TransactionStatus.Started))
            {
                m_mainTtransactionGroup.SetName("SDK Transaction Sample");
                m_mainTtransactionGroup.Assimilate();
            }

            this.DialogResult = DialogResult.OK;
            this.Close();
        }