重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
用Timer解决问题的思路很简单,首先设定Timer类的Interval属性(单位是毫秒),也就是时间间隔;然后在Timer的Elapsed的事件里写执行代码,每过一个设置好的Interval时间间隔,将执行一次Elapsed中的事件 (这和VB程序中的Timer控件基本没有区别)。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、虚拟主机、营销软件、网站建设、黔江网站维护、网站推广。
那知道了用什么类,这些代码要写在哪里呢?把代码写在Global.asax件中,在VS的项目上右键,点添加--》新建项,选“全局应用程序类”,项目中就会有Global.asax文件了。
为了表达清楚直接上代码(首先在Global.asax文件头部引入system.Timers命名控件):
span style="font-size:18px;" public class Global : System.Web.HttpApplication
{
//在网站运行时这段代码同时启动
protected void Application_Start(object sender, EventArgs e)
{
System.Timers.Timer objTimer = new System.Timers.Timer();
objTimer.Interval = 60*1000; //这个时间单位:毫秒
objTimer.Enabled = true; //设置Timer类的可用性
//将Timer的Elapsed事件绑定到新建立的timer对象上
objTimer.Elapsed += new ElapsedEventHandler(objTimer_Elapsed);
}/span
下面是在Timer的Elapsed事件中的代码
span style="font-size:18px;"void objTimer_Elapsed(object sender, ElapsedEventArgs e)
{
string Time = DateTime.Now.ToShortTimeString();//获得当前时间
//从配置文件里获得当前设置的时间。
string OrderTime = ConfigurationManager.AppSettings["OrderFoodTime"];
/*测试数据*/
if(Time.Equals(OrderTime))
{
//如果时间相等,执行你要执行的操作,这里可以调用你程序中的其他类的方法
}
}/span
Timer1.Interval = 500
Private Sub Timer1_Timer()
Timer1.Enabled = False
Dim ss As String
ss = Format(Now, "HH:mm:ss")
If ss = "12:00:00" Then
'执行备份语句
End If
Timer1.Enabled = True
End Sub
还有一个办法就是可以用SQL自身的功能,在SQL里面可以添加任务 ,设置周期为每天,时间为12点,到时候执行一下备份
我给你一个简单的思路:
1,定义5个公共布尔变量,用来记录5个线程的执行情况
2,线程开始变量赋值假,执行完毕或者异常退出赋值真
3,一直用一个定时器扫描5个公共布尔变量----------随时知道状态
Timer 是在 主线程里执行的,Thread 是在自己的线程中执行的,多核心的CPU使用线程能提高处理能力。回到你的问题,主线程如果卡死,timer就会失去响应,很正常的。请使用System.Timers.Timer类吧。请参考一下:
控制台调用Timer和窗体是类似的。首先在项目引用里面加入System.Windows.Forms程序集,然后在代码顶部引入命名空间:
Imports System.Windows.Forms
在控制台的Module中声明一个计时器:
Private WithEvents Timer1 As New Timer()
把计时器的Tick事件静态绑定到处理函数中:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'一些代码
End Sub
在需要开始计时的地方,修改其Interval、Enabled属性:
Timer1.Interval = 1000
Timer1.Enabled = True
可能原因:timer不是由当前线程创建的。
解决方案:在线程中实例化一个timer,然后触发,可以去试一下;或者通过委托,调用timer。
先不用线程试一下吧。