GLOBAL 另起线程使用Application的时候遇到了问题,请高手帮忙解决一下
global代码是这样的using Project.Bll.Account.SystemSend;
protected void Application_Start(object sender, EventArgs e)
{
SystemSend SystemSend=new SystemSend();
Thread Thd1 = new Thread(new ThreadStart(SystemSend.Call_Get_MessSend));
Thd1.Start();
}
SystemSend类代码
public void Call_Get_MessSend()
{
HttpContext.Current.Application["WindowPrompt"] = ",";//就这里提示我错误,提示HttpContext为null难道给application赋值也出错么 请高手指点一下该怎么解决
} --------------------编程问答-------------------- 感觉像因为我另起了个线程 然后使用APPLICATION就出现的错误 如果不另起线程就没问题,但是必须起两个线程 期待高手解决!谢谢 --------------------编程问答-------------------- 在web程序非主线程中获取HttpContext肯定获取不到的。
先说说为什么必须在新线程中给Application赋值?
在Global的Application_Start函数的意义就是在启动程序时才运行一次,每次启动也就运行一次,你又可比新开一个线程去给Application赋值呢? --------------------编程问答-------------------- global代码是这样的
using Project.Bll.Account.SystemSend;
protected void Application_Start(object sender, EventArgs e)
{
SystemSend SystemSend=new SystemSend();
Thread Thd1 = new Thread(new ParameterizedThreadStart(SystemSend.Call_Get_MessSend));
Thd1.Start();
}
SystemSend类代码
public void Call_Get_MessSend(object param)
{
HttpApplication app = param as HttpApplication;
app["WindowPrompt"] = ",";//就这里提示我错误,提示HttpContext为null难道给application赋值也出错么 请高手指点一下该怎么解决
} --------------------编程问答-------------------- 如果真有需要,就从主线程传进来 --------------------编程问答-------------------- public string GetAppState(string key)
{
HttpApplicationState Application = HttpContext.Current.Application;
if (Application[key] == null)
{
return null;
}
else if (Application[key] is System.String)
{
return Application[key].ToString();
}
else
{
return null;
}
}
--------------------编程问答-------------------- 哦, 忘记一点
global
using Project.Bll.Account.SystemSend;
protected void Application_Start(object sender, EventArgs e)
{
SystemSend SystemSend=new SystemSend();
Thread Thd1 = new Thread(new ParameterizedThreadStart(SystemSend.Call_Get_MessSend));
Thd1.Start(this);//把Application传过去
}
SystemSend类代码
public void Call_Get_MessSend(object param)
{
HttpApplication app = param as HttpApplication;
app["WindowPrompt"] = ",";
} --------------------编程问答-------------------- to 楼上:
以参数的形式把Application传到线程中去赋值,与在主线程中直接给Application赋值,两者都是同一个Application,实在想不明白如何多此一举有什么用?
to 楼主:
在Web应用程序中一般情况下不支持使用多线程。 --------------------编程问答-------------------- --------------------编程问答--------------------
学习了
补充:.NET技术 , ASP.NET