当我在aspx的页面1用以下方式开启了线程myThread1,关闭页面后,它还会继续运行(w3wp进程未结束,它都会继续运行)。
 ParameterizedThreadStart ParStart = new ParameterizedThreadStart(DoSomething);
            Thread myThread = new Thread(ParStart);
            myThread.Name = "myThread1";
            myThread.Start();
如何在其它页面获取到进程myThread1的状态,并可以控制(暂停、挂起、结束)它?

解决方案 »

  1.   

    在global.aspx的application start里面定义这个线程myThread
    在A.aspx里创建线程并启动
    在B.aspx里控制它,如if(myThread!=null)
    {
        myThread.Abort(); //强制结束
    }
      

  2.   


    放到全局文件不方便,如果多个页面都可能创建线程的话,这样管理不方便。
    可不可以列出w3wp进程里所有线程,做个列表,手工决定挂起还是结束。参考:
    https://blog.csdn.net/wwwsq/article/details/76537788
      

  3.   

    查到了控制进程的方法:[.NET] Suspend Process 暫停批次執行 
    https://dotblogs.com.tw/stanley14/2016/01/19/145355.net - Suspend Process in C# - Stack Overflow
    https://stackoverflow.com/questions/71257/suspend-process-in-c-sharp线程的还在研究中
      

  4.   


    multithreading - Killing/aborting a specific thread using it's ID in c# - Stack Overflow
    https://stackoverflow.com/questions/28295619/killing-aborting-a-specific-thread-using-its-id-in-c-sharp用Abort()太危险,可能会导致整个进程中断,用挂起即可,参考这个解决了。