asp.net 定时执行每次结果不一样

我想做一个定时执行的程序 我先做了一个试验 但有点小问题 而且每次结果都不一样 纳闷了
点击 Button1_Click 的时候开始任务 任务就是一个静态变量 自加1
点击 Button2_Click 的时候获取值

然后问题就是 有时候加到8就不加了 有时候20不加了
反正情况很多 这是什么问题啊?

页面程序

protected void Page_Load(object sender, EventArgs e)
{
}

protected void Button1_Click(object sender, EventArgs e)
{
if (Class1.intmenber == 0)
{
TimerCallback time = new TimerCallback(Class1.tick);
System.Threading.Timer timer = new System.Threading.Timer(time, null, 1000,System.Threading.Timeout.Infinite);
}
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox1.Text = Class1.intmenber.ToString();
}

类文件

public static int intmenber = 0;
public Class1()
{
}
public static void tick(Object objec)
{
intmenber++;
}

第1个回答  2010-03-01
iis线程是不可靠的线程,它会自动回收,或者其它页面的某个程序出错,也会重启iis线程。所以在页面里面使用Timer是不可靠的。

你可以使用日志,监视Application_Start或Application_End是否变化。
第2个回答  2010-03-15
定时执行别用线程做!

直接用 System.Threading.Timer timer 调用方法本回答被提问者采纳

asp.net 定时执行每次结果不一样
iis线程是不可靠的线程,它会自动回收,或者其它页面的某个程序出错,也会重启iis线程。所以在页面里面使用Timer是不可靠的。你可以使用日志,监视Application_Start或Application_End是否变化。

NET中的三种Timer的区别和用法
从上面图可以看到程序执行了7.8S也就是 7800ms,而间隔时间是20ms,也就是最后显示数字应该是390左右,但只有250,显然是不准确的,不过按MSDN说的55ms的精度,7800ms应该只执行了140多次或更少。不知道这里是不是理解有问题。 二System.Timers.Timer 接下来就看下另一个Timer,我们用他来改写上面的程序 #region Syst...

asp.net做一个定时查询,查到符合要求的信息则弹出对话框,否则无操作...
你觉得服务器会知道 将要发送到哪个客户端上吗? 很显然服务器不知道,所以说定时器要写在页面上,在规定的时间内请求服务器,服务器处理之后会返回请求的,因为你没有请求他跟不知道把信息返回给那个客户端

NET中的三种Timer的区别和用法
另外和前面不同的现象是每次加1后并没有停止3秒在显示。而是继续显示,只是速度稍慢。因为我们设置间隔为20ms,而执行时间为3s,所以会在20ms后在另一个线程中继续执行,而当前线程被挂起而已。关于计时器的精度,取消3s的挂起,发现结果和第一个基本一致。 三System.Threading.Timer 继续用这个对象改造程序。 #region ...

asp.net C# 如何实现在服务器上拷贝文件时,控制拷贝速度
如果是网络路径上的另一个文件夹,如果是内网上的机器,而服务器对外网的流量大,那也不影响,毕竟2者的速度差距很大。如果本来就是内部网站,而内部流量很大或者传到外网上的机器或者你一定想要限速。。好吧。。如同之前有人说的另起个线程:Thread t1 = new Thread(new ThreadStart(CopyFile));t1....

IIS ASP.Net模拟 怎么关闭
单击“确定”关闭“编辑 ASP.NET 模拟设置”对话框。命令行 若要启用或禁用 ASP.NET 模拟,请使用以下语法:appcmd set config \/commit:WEBROOT \/section:identity \/impersonate:true | false 默认情况下,IIS 会将 impersonate 属性设置为 false,这会禁用 ASP.NET 模拟身份验证。 如果将此属性设置为 ...

电脑死机,鼠标动不了.
这是一个非常不错的备份工具,可以从“开始” “所有程序” “附件” “系统工具”中找到。 ● 导出数据 Step1 如图1所示,由于我们是执行导出数据的操作,因此这里应该选择“旧计算机”,然后点击“下一步”按钮,稍等片刻后会看到一个提示选择转移方法的对话框,其中列出了直接电缆、家庭网络或小型办公网络、软盘驱动...

NET中的三种Timer的区别和用法
另外和前面不同的现象是每次加1后并没有停止3秒在显示。而是继续显示,只是速度稍慢。因为我们设置间隔为20ms,而执行时间为3s,所以会在20ms后在另一个线程中继续执行,而当前线程被挂起而已。关于计时器的精度,取消3s的挂起,发现结果和第一个基本一致。 三System.Threading.Timer 继续用这个对象改造程序。 #region...

NET中的三种Timer的区别和用法
另外和前面不同的现象是每次加1后并没有停止3秒在显示。而是继续显示,只是速度稍慢。因为我们设置间隔为20ms,而执行时间为3s,所以会在20ms后在另一个线程中继续执行,而当前线程被挂起而已。关于计时器的精度,取消3s的挂起,发现结果和第一个基本一致。三 System.Threading.Timer ...

NET中的三种Timer的区别和用法
最近正好做一个WEB中定期执行的程序,而.NET中有3个不同的定时器。所以正好研究研究。这3个定时器分别是:\/\/1.实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用。System.Windows.Forms.Timer \/\/ 2.提供以指定的时间间隔执行方法的机制。

相似回答
大家正在搜