Пример #1
0
        private void ProcessThreadMain(object arg)
        {
            Exception e = null;

            try
            {
                m_operation.BeginAsyncExecution();
            }
            catch (Exception ex)
            {
                e = ex;
                Exception ex2 = ex;
                while (true)
                {
                    if (ex2 != null)
                    {
                        if (ex2 is ThreadAbortException || ex2 is OperationCanceledException)
                        {
                            break;
                        }
                        ex2 = ex2.InnerException;
                        continue;
                    }
                    return;
                }
                e = new OperationCanceledException();
            }
            finally
            {
                m_operation.EndAsyncExecution(e);
                m_operation        = null;
                m_cancelInProgress = false;
            }
        }
Пример #2
0
 public bool Cancel(int millisecondsTimeout)
 {
     if (IsRendering)
     {
         try
         {
             AsyncReportOperation operation = m_operation;
             if (operation != null && !operation.Abort())
             {
                 m_cancelInProgress = true;
                 // TODO: Find a way to access Microsoft.ReportingServices.OnDemandProcessing.AbortHelper here
                 //m_backgroundThread.Abort();
                 //millisecondsTimeout = 0;
             }
         }
         catch (ThreadStateException)
         {
             if (IsRendering)
             {
                 throw;
             }
         }
         if (millisecondsTimeout != 0)
         {
             return(m_backgroundThread.Join(millisecondsTimeout));
         }
         return(false);
     }
     return(true);
 }
Пример #3
0
 public bool Cancel(int millisecondsTimeout)
 {
     if (IsRendering)
     {
         try
         {
             AsyncReportOperation operation = m_operation;
             if (operation != null && !operation.Abort())
             {
                 millisecondsTimeout = 0;
             }
         }
         catch (ThreadStateException)
         {
             if (IsRendering)
             {
                 throw;
             }
         }
         if (millisecondsTimeout != 0)
         {
             return(m_backgroundThread.Join(millisecondsTimeout));
         }
         return(false);
     }
     return(true);
 }
Пример #4
0
 public void BeginBackgroundOperation(AsyncReportOperation operation)
 {
     if (m_backgroundThread != null)
     {
         m_backgroundThread.Join();
     }
     operation.ClearAbortFlag();
     m_operation        = operation;
     m_backgroundThread = new Thread(ProcessThreadMain);
     try
     {
         PropagateThreadCulture();
     }
     catch (SecurityException)
     {
     }
     m_backgroundThread.Name         = "Rendering";
     m_backgroundThread.IsBackground = true;
     m_backgroundThread.Start(operation);
 }