Advertisement
Guest User

ThreadAbortException on spawned Thread won't crash process

a guest
Oct 8th, 2015
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.42 KB | None | 0 0
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2. <%@ Import Namespace="System.Threading" %>
  3. <!DOCTYPE html>
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head runat="server">
  6.     <title></title>
  7. </head>
  8. <body>
  9.     <form id="form1" runat="server">
  10.     <div>
  11.         <asp:Button ID="btnNormalExceptionOnThread" runat="server" Text="Normal Exception on Thread (crashes w3wp.exe)" OnClick="btnNormalExceptionOnThread_Click" />
  12.         <asp:Button ID="btnThreadAbortExceptionOnThread" runat="server" Text="Thread Abort Exception On Thread (graceful)" OnClick="btnThreadAbortExceptionOnThread_Click" />
  13.         <div>As <a href="https://msdn.microsoft.com/en-us/library/ms228965%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396">documented</a> by MSDN.</div>
  14.     </div>
  15.     </form>
  16. </body>
  17. </html>
  18. <script runat="server">
  19.     private void btnNormalExceptionOnThread_Click(object sender, EventArgs e)
  20.     {
  21.         var t = new Thread(new ThreadStart(GoAndThrow));
  22.         t.Start();
  23.     }
  24.     private void btnThreadAbortExceptionOnThread_Click(object sender, EventArgs e)
  25.     {
  26.         var t = new Thread(new ThreadStart(Go));
  27.         t.Start();
  28.         Thread.Sleep(1000);
  29.         t.Abort();
  30.     }
  31.     private void GoAndThrow()
  32.     {
  33.         Thread.Sleep(1000);
  34.         throw new Exception("foo");
  35.     }
  36.     private void Go()
  37.     {
  38.         Thread.Sleep(3000);
  39.     }
  40. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement