private void taskCompletedCallback(IAsyncResult ar)
        {
            saveOrderStateDelegate orderStateDelegate = (saveOrderStateDelegate)((AsyncResult)ar).AsyncDelegate;
            AsyncOperation         async = (AsyncOperation)ar.AsyncState;

            // finish the asynchronous operation
            orderStateDelegate.EndInvoke(ar);
        }
        public void saveOrderStateAsync(int orderID, int userID)
        {
            saveOrderStateDelegate orderStateDelegate = new saveOrderStateDelegate(saveOrderStateTask);
            AsyncCallback          completedCallback  = new AsyncCallback(taskCompletedCallback);

            lock (_sync)
            {
                orderStateDelegate.BeginInvoke(orderID, userID, completedCallback, null);
                _taskIsRunning = true;
            }
        }