C# 如果IIS杀死已经获得锁的线程,会发生什么情况?
我试图调试一个问题,其中“doStuff”方法阻塞了几个线程。此函数作为承载在IIS上的web应用程序的一部分运行C# 如果IIS杀死已经获得锁的线程,会发生什么情况?,c#,multithreading,iis,C#,Multithreading,Iis,我试图调试一个问题,其中“doStuff”方法阻塞了几个线程。此函数作为承载在IIS上的web应用程序的一部分运行 在IIS的上下文中,是否有可能线程在获得锁后死亡,而其余线程无法获得锁?不可能,但是(并且您的问题中没有太多信息)在处理IIS和ASP.Net时,您必须考虑一个特定的技术问题,“线程敏捷性”,在ASP.Net中,无法保证“开始工作”的线程与“完成工作”的线程是同一个线程,因此,如果您有一些异步调用,例如使用完成端口,您可能会遇到问题。你可以阅读更多关于这个问题的信息:或者只是谷歌一
在IIS的上下文中,是否有可能线程在获得锁后死亡,而其余线程无法获得锁?不可能,但是(并且您的问题中没有太多信息)在处理IIS和ASP.Net时,您必须考虑一个特定的技术问题,“线程敏捷性”,在ASP.Net中,无法保证“开始工作”的线程与“完成工作”的线程是同一个线程,因此,如果您有一些异步调用,例如使用完成端口,您可能会遇到问题。你可以阅读更多关于这个问题的信息:或者只是谷歌一下。请检查这是否有帮助:。基本上,当lIS终止一个线程时,会抛出一个ThreadAbortException,这样我们的代码就可以在线程实际关闭之前进行清理。
private static readonly object _accessLock = new object();
private void doStuff()
{
lock (_accessLock)
{
//code
}
}