【发布时间】:2014-06-24 14:02:15
【问题描述】:
我在 aspnet 中有这个简单的代码:假设没有异常、文件锁定或进程终止:
new Thread(()=>{
Thread.sleep(15000);
// GC.Collect();
File.Write (...); // dummy file
}).Start();
// GC.Collect();
根据我的测试,该文件是总是创建的。
问题
我不理解的情况是请求生命周期比线程执行短得多,但它仍然有效。就这样 。这是我的主要问题
是否总是保证文件会被创建?
请注意,这只是检查行为的测试。 该页面也是一个只有此代码的空页面。我也知道加入会等待
【问题讨论】:
-
不清楚您认为可能会发生什么来阻止这种情况。是的,该进程可能会被杀死。是的,可能存在异步异常。是的,该文件可能正在其他地方使用。不,正在执行的线程不会被垃圾回收 - 这实际上是您所担心的吗?如果有,请在问题中说明清楚。
-
Jon ,已编辑。假设没有异常,也没有锁定
-
那么,您又在考虑什么替代方案?如果您担心垃圾收集,正如您的代码暗示,您应该这样说。
-
如果没有异常或其他问题,您关心的问题在哪里?
-
乔恩,帕特里克 - 我不理解的场景是请求生命周期比线程执行短得多,但它仍然有效。就这样 。这是我的主要问题
标签: c# asp.net multithreading