有一次,我做了一次实验,说有一次我使用了类似于Thread.IsBackground = true (后台线程)之类的东西,并在控制器方法的方法中做了一些繁重的工作。代码片段如下所示:
Thread th = new Thread(()=>Thread.Sleep(10000); Log.Write……);
th.IsBackGround = true;
th.Start();事实上,对控制器方法的请求不会花费那么多时间(这只是一个实验!)当我请求控制器的具体方法时。我没看到任何记录!
我知道这一点,因为线程的生命周期与简单请求的生命周期一样长。但是,如果我想使用类似的任务(我知道这取决于线程池……的……= true ),等等。
有可能吗?我现在有几种方法,也许不是很好,但想知道更多的建议:
1)直接使用“线程”(除了抛出的异常)来中止要由GC回收的"Thread“实例?
2)在NET4.0中使用"Task“,将"TaskOptions”与LongWorking一起使用(它会被GC回收并完成繁重的任务吗?)
( 3)在基于web的应用程序中,当请求发出时,有关线程的任何其他想法都可以完成繁重的工作,并由GC回收吗?
发布于 2017-07-11 08:36:08
我不确定我完全理解你的问题,但这可能对你有用,HostingEnvironment.QueueBackgroundWorkItem() in ASP.NET for small background tasks
https://stackoverflow.com/questions/45029074
复制相似问题