title: Thread was being aborted when exporting to excel?
body: <p>I have a DataTable which is bound to a GridView.  I also have a button that when clicked exports the DataTable to an Excel file.  However, the following error is occuring:</p>
  
  <p>ErrMsg = "Thread was being aborted."</p>
  
  <p>Here is part of the code where the error is being thrown:</p>
  
  <pre><code>private static void Export_with_XSLT_Web(DataSet dsExport, 
                                           string[] sHeaders,
                                           string[] sFileds, 
                                           ExportFormat FormatType,
                                           string FileName)
  {
      try
      {
          // Appending Headers
          HttpContext.Current.Response.Clear();
          HttpContext.Current.Response.Buffer = true;
  
          if(FormatType == ExportFormat.CSV)
          {
              HttpContext.Current.Response.ContentType = "text/csv";
              HttpContext.Current.Response.AppendHeader("content-disposition",
                                                        "attachment; 
                                                        filename=" + FileName);
          }
          else
          {
              HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
              HttpContext.Current.Response.AppendHeader("content-disposition", 
                                                        "attachment; 
                                                        filename=" + FileName);
          }
  
          // XSLT to use for transforming this dataset.                       
          MemoryStream stream = new MemoryStream();
          XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8);
  
          CreateStylesheet(writer, sHeaders, sFileds, FormatType);
          writer.Flush();
          stream.Seek(0, SeekOrigin.Begin);
  
          XmlDataDocument xmlDoc = new XmlDataDocument(dsExport);
          //dsExport.WriteXml("Data.xml");
          XslTransform xslTran = new XslTransform();
          xslTran.Load(new XmlTextReader(stream), null, null);
  
          using(StringWriter sw = new StringWriter())
          {
              xslTran.Transform(xmlDoc, null, sw, null);
  
              //Writeout the Content              
              HttpContext.Current.Response.Write(sw.ToString());                
              writer.Close();
              stream.Close();
              HttpContext.Current.Response.End();
          }
      }
      catch(ThreadAbortException Ex)
      {
          string ErrMsg = Ex.Message;
      }
      catch(Exception Ex)
      {
          throw Ex;
      }
      finally
      {
  
      }
  }
  </code></pre>
  
  <p>After changing HttpContext.Current.Response.End to HttpContext.Current.ApplicationInstance.CompleteRequest, it now just goes to the finally block and I can't figure out what error message is being thrown.</p>