页面再次请求的时候如何判断这个线程已经存在了
public System.Threading.Thread thread;
public void GetDrpPrice()
{
thread = new System.Threading.Thread(new ThreadStart(StartTimer));
thread.Name = "ththt";
if (thread.IsAlive)
{
//......
}
}
页面请求的方法内启了一个线程,页面再次加载的时候,我希望检测这个线程已经存在的话,就返回一个值(如果true),告诉页面这个线程已经在了,不创建。
为此我将线程thread定义为全局的,但是每次进来thread仍然是null,请大家帮忙
[解决办法]
web的机制就是这样的,每次新来一个请求,都会new一个页面,所以你弄成全局变量是没用的。
你可以存到session里面
[解决办法]
还是别起名字了
[解决办法]
与命名无关的(也没有影响,我没有用名字来识别),我想知道怎样实现判断线程已经存在了?
还是别起名字了
存到session里啊
[解决办法]
你这是开发WEB程序,全局有啥用呢,你要理解WEB的机制,通过请求获取数据的,不像客户端程序数据是可以分发的。所以即使你的thread是定义在外面,看起来是全局的,但是页面重新请求了肯定为null。而且thread一般是放在后台服务端去处理事情,不用在线面中去用。
[解决办法]
如果我没猜错 你再次请求这个aspx的时候 这个线程肯定不存在..
你以为这是CS?
还线程...
[解决办法]
设置成静态的看看
static
[解决办法]
有必要用线程吗...
[解决办法]
有必要用线程吗...
+1
根本就不应该用线程
[解决办法]
我是启动了一个任务,这个任务是一直跑在后台的,每隔24小时执行一次,如果不用线程,请大家给一个解决方案。
Timer定时器我知道,但是我的问题仍然是页面刷新的时候怎么判断这个定时器已经在执行了,不需要再次启动。
你写个WINDOW SERVICE 不就好了,再简单点用WIN FORM程序就好,
和WEB挂一起算什么,没人打开页面就不跑了?
[解决办法]
我是启动了一个任务,这个任务是一直跑在后台的,每隔24小时执行一次,如果不用线程,请大家给一个解决方案。
Timer定时器我知道,但是我的问题仍然是页面刷新的时候怎么判断这个定时器已经在执行了,不需要再次启动。
很多解决方案啊..楼上就已经说2个了 一个服务 或者简单用一个exe来定时执行,
或者sql作业调用webservice 太多解决方案了 但是根本没你这么做的..
没人请求 你的代码根本不执行.
[解决办法]
按以下方式写即可
public Thread thread
{
get { return (Thread)Session["thread"]; }
set { Session["thread"] = value; }
}