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; } }
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); }
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); }
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); }