- C# code
protected void Application_Start(object sender, EventArgs e) { if (HttpRuntime.Cache["ScheduleTask"] == null) { //第一种办法 //System.Timers.Timer t = new System.Timers.Timer(); //t.Elapsed+=new System.Timers.ElapsedEventHandler(test); //t.Interval = 1000; //t.Enabled = true; //GC.KeepAlive(t); //第二种办法 System.Threading.Thread thread = new System.Threading.Thread(test); thread.Start(); //HttpRuntime.Cache["ScheduleTask"] = st; } } void test() { Log.writeLog("测试成功"); }
为什么执行之后
连接被重置
载入页面时到服务器的连接被重置。
此站点暂时不可用或者太忙。请稍后重试。
如果您无法载入任何页面,请检查您计算机的网络连接。
如果您的计算机受到防火墙或代理服务器的保护,请确认 Firefox 被授权访问网页。
另外自定义类中的HttpContext也成了null,现在暂时去掉了这个
- C# code
namespace xinchen.Shared.Tools{ public class UrlHelper { public static string Root = HttpContext.Current.Request.ApplicationPath;···············
但仍然不能访问
如果我不开始线程,就一切正常,HttpContext也有值
------解决方案--------------------------------------------------------
你的 HttpContext.Current 为什么有值?那是因为asp.net在使用线程来处理新来的请求时为当前线程设置了环境变量值嘛。而你在线程中又搞了别的线程去执行.....