global.asax 多线程问题

万载馨辰 2012-04-29 05:50:20

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,现在暂时去掉了这个

namespace xinchen.Shared.Tools
{
public class UrlHelper
{
public static string Root = HttpContext.Current.Request.ApplicationPath;
···············

但仍然不能访问
如果我不开始线程,就一切正常,HttpContext也有值
...全文
190 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
万载馨辰 2012-04-29
  • 打赏
  • 举报
回复
偶弄错了··结贴
万载馨辰 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

哦,Application_Start啊!我还以为是aspx。

这个时候你希望线程中有 HttpContext.Current 值?这就更不可能了。
[/Quote]

应该说这个地方不算重点吧
重点是在Application_Start里面执行timer和多线程时,程序总要挂掉
测试发现里面的函数根本没执行
就像上面那样写的,执行不了,不知道哪儿的问题
  • 打赏
  • 举报
回复
哦,Application_Start啊!我还以为是aspx。

这个时候你希望线程中有 HttpContext.Current 值?这就更不可能了。
  • 打赏
  • 举报
回复
你的 HttpContext.Current 为什么有值?那是因为asp.net在使用线程来处理新来的请求时为当前线程设置了环境变量值嘛。而你在线程中又搞了别的线程去执行.....
万载馨辰 2012-04-29
  • 打赏
  • 举报
回复
又没人理么···

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧