//***************************************************************************
        // Thread Callbacks
        //
        private void BeginSortCallback(IAsyncResult state)
        {
            BeginSortByValueDelegate    del1 = (state.AsyncState as BeginSortByValueDelegate);
            BeginSortByComparerDelegate del2 = (state.AsyncState as BeginSortByComparerDelegate);

            if (del1 != null)
            {
                del1.EndInvoke(state);
            }

            else if (del2 != null)
            {
                del2.EndInvoke(state);
            }

            this.OnSortComplete(EventArgs.Empty);
        }
        protected void BeginSort(SortDirection dir, IComparer comparer)
        {
            BeginSortByComparerDelegate del = new BeginSortByComparerDelegate(this.Sort);

            del.BeginInvoke(dir, comparer, new AsyncCallback(this.BeginSortCallback), del);
        }