C# 使用timer创建了一个定时器之后,在时间到了之后怎么自动跳转的新页面

Lucky_502 2015-08-24 11:57:01
如题。我使用一个按钮事件来激活定时器,在定时器时间到了之后,怎么让它自动跳转到新的页面上去?定时器代码如下:
System.Timers.Timer t = new System.Timers.Timer();//实例化Timer类
int intTime = 5000;

t.Interval = intTime;//设置间隔时间,为毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
t.AutoReset = false;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;

下面是使用的 几种方法都不能跳转:
public void theout(object source, System.Timers.ElapsedEventArgs e)
{
//Response.Redirect("Entry.aspx");
//Server.Transfer("Entry.aspx",true);
//Response.Write("<meta http-equiv=refresh content= '5;URL=Entry.aspx '> ");
//Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "redirect", "<script type='text/javascript'>test();</script>");
}
...全文
335 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
编程要从原理出发,顺着人家的框架去写代码,否则永远也不会自己设计程序。
  • 打赏
  • 举报
回复
没有办法。 这是asp.net,你要懂得asp.net页面生命周期跟winform窗体的生命周期的基本区别。asp.net页面在1、2秒钟就处理完了,以后就再也不执行 render 功能了。
Lucky_502 2015-08-24
  • 打赏
  • 举报
回复
额。。。这个:
//Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "redirect", "<script type='text/javascript'>test()</script>");
是我使用的前台方法跳转,可惜还是不行 这里是后台写的:
//Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "redirect", "<script type='text/javascript'>window.location.href = 'Entry.aspx';</script>");
Poopaye 2015-08-24
  • 打赏
  • 举报
回复
引用 12 楼 Lucky_502 的回复:
额。。。确实是。。。你知道在微信内置浏览器上可以使用的JQ包吗?或者怎么写纯js版本的ajax?
要什么ajax?9楼不是都有方案了
Lucky_502 2015-08-24
  • 打赏
  • 举报
回复
引用 11 楼 shingoscar 的回复:
[quote=引用 5 楼 Lucky_502 的回复:] 因为是所有的用户都需要跳转,所有我才想在后台写,而不是在前台
网页的跳转当然是写在前台,用js或者html都能实现。怎么可能在后台,等你想跳的时候连接都断了[/quote] 额。。。确实是。。。你知道在微信内置浏览器上可以使用的JQ包吗?或者怎么写纯js版本的ajax?
Poopaye 2015-08-24
  • 打赏
  • 举报
回复
引用 5 楼 Lucky_502 的回复:
因为是所有的用户都需要跳转,所有我才想在后台写,而不是在前台
网页的跳转当然是写在前台,用js或者html都能实现。怎么可能在后台,等你想跳的时候连接都断了
Lucky_502 2015-08-24
  • 打赏
  • 举报
回复
引用 8 楼 Z65443344 的回复:
一般这种情况,不要用web服务器的timer,而应该另外启动个服务程序去处理这种事情. 变量可以用数据库的字段,然后前台去数据库里取值. 或者用singleR,支持推送
前台去数据库里取值不是更麻烦了吗?还要创建数据库连接等工作 另外,singleR是什么?没有了解过,百度、谷歌也没有解释
qbilbo 2015-08-24
  • 打赏
  • 举报
回复
按你的想法,定时器应该放在客户端。 前台:
<script type="text/javascript">
        function redirect() {
            window.location.href="xxx"; 
        }
 </script>
后台:
int timeout = 5000;
 Page.ClientScript.RegisterStartupScript(this.GetType(), "redirect", string.Format("<script type='text/javascript'>window.setTimeout(redirect, {0});</script>",timeout));
没测试过,不知道有没有什么地方拼写错误什么的,但原理不会错。
於黾 2015-08-24
  • 打赏
  • 举报
回复
一般这种情况,不要用web服务器的timer,而应该另外启动个服务程序去处理这种事情. 变量可以用数据库的字段,然后前台去数据库里取值. 或者用singleR,支持推送
Lucky_502 2015-08-24
  • 打赏
  • 举报
回复
引用 6 楼 Z65443344 的回复:
[quote=引用 4 楼 Lucky_502 的回复:] [quote=引用 2 楼 sp1234 的回复:] 没有办法。 这是asp.net,你要懂得asp.net页面生命周期跟winform窗体的生命周期的基本区别。asp.net页面在1、2秒钟就处理完了,以后就再也不执行 render 功能了。
那么我想让所有打开这个页面的用户在某一时间全部跳转到某一页面该怎么写呢?[/quote] 没有办法.这不是单机程序,也不是socket长连接的通信程序 这是网站,http协议,bs架构 IE如果不重新向服务器提交请求,那么它其实就已经脱机运行了,跟你的网站没有任何瓜葛了 除非你在页面上加singleR,ajax轮询之类的技术,让IE和服务器保持通信,然后你在服务器里对所有登陆的用户发一个指令[/quote] 也就是说,如果想要实现这个功能那么,在服务器上同样使用定时器去改变某一个变量的值,客户端要用ajax定时轮询服务端的某一变量,改变就跳转?
於黾 2015-08-24
  • 打赏
  • 举报
回复
引用 4 楼 Lucky_502 的回复:
[quote=引用 2 楼 sp1234 的回复:] 没有办法。 这是asp.net,你要懂得asp.net页面生命周期跟winform窗体的生命周期的基本区别。asp.net页面在1、2秒钟就处理完了,以后就再也不执行 render 功能了。
那么我想让所有打开这个页面的用户在某一时间全部跳转到某一页面该怎么写呢?[/quote] 没有办法.这不是单机程序,也不是socket长连接的通信程序 这是网站,http协议,bs架构 IE如果不重新向服务器提交请求,那么它其实就已经脱机运行了,跟你的网站没有任何瓜葛了 除非你在页面上加singleR,ajax轮询之类的技术,让IE和服务器保持通信,然后你在服务器里对所有登陆的用户发一个指令
Lucky_502 2015-08-24
  • 打赏
  • 举报
回复
因为是所有的用户都需要跳转,所有我才想在后台写,而不是在前台
Lucky_502 2015-08-24
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
没有办法。 这是asp.net,你要懂得asp.net页面生命周期跟winform窗体的生命周期的基本区别。asp.net页面在1、2秒钟就处理完了,以后就再也不执行 render 功能了。
那么我想让所有打开这个页面的用户在某一时间全部跳转到某一页面该怎么写呢?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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