asp 怎么样每隔3秒自动调用一个方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp 怎么样每隔3秒自动调用一个方法相关的知识,希望对你有一定的参考价值。
服务器和客户端的尽量详细点儿吧。。。。呵呵,当时正在思考上两种方式最好用那一种。谢过各位大侠了!
参考技术A asp基本上不太可能做到每三秒调用一个方法!ASP没有计量器,必须要有人访问到页面才能开始计时!所以用ASP实现基本上是不太可能! 参考技术B 不知道你是要调用服务器上的方法还是客户端的客户端的,很简单,JS函数定期调用就好了setInterval
如果是服务器的方法,你服务器肯定是不能主动让客户端不定时调用自己的方法,这个安全上有问题,所以你要做的会只有利用AJAX这些技术来和服务器通讯,详细搜索ASP AJAX 参考技术C 多线程网络编程
1. 执行多线程最主要的是有相应的多线程操作函数,所以首先创建函数:
DWORD WINAPI AnswerThread(LPVOID lparam)
2. 创建socket:
m_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
3. socket绑定到IP地址端口:
bind(m_socket,(struct sockaddr*)&service,sizeof(struct sockaddr_in))
4. 处于监听状态等待连接:
listen(m_socket,20)
5. 建立连接后,启动多线程:
CreateThread(NULL,NULL, AnswerThread, (LPVOID)AcceptSocket,0,&dwThreadId);
#include本回答被提问者和网友采纳 参考技术D 在首页 最顶部 <!--#include file = "config.asp" -->
然后想调用那个 就直接 <%=****%> 就可以了吖- -
调用每 5 秒返回一个值的方法
【中文标题】调用每 5 秒返回一个值的方法【英文标题】:Call a method that returns a value every 5 seconds 【发布时间】:2012-05-16 20:13:41 【问题描述】:我想调用一个每隔几秒返回一个值的方法。
我曾尝试将Timer
与elapsedEventandler
一起使用,但在这种情况下该方法的返回类型是无效的。我使用TimerTask
类在Java 中执行相同的任务。
我希望它在 .NET 2.0 中,因为我使用的是 Visual Studio 2005。
以下是我遇到问题的程序。我尝试使用匿名方法,但是这种情况下response
的值在匿名方法之外不存在:
public static string Run(string address)
string response = "A";
Timer t = new Timer();
t.Elapsed += delegate
response = callURL(address);
console.writeln(response);
// The actual response value is printed here
;
t.Interval = 3000;
t.Start();
Console.WriteLine("response string is " + response);
// response string is A
return response;
public static string callURL(string address)
className sig = new ClassName();
String responseBody = sig.getURL(address);
return responseBody;
如何在Run
方法中获取response
的值并发送给Run
方法的调用者?
【问题讨论】:
返回到哪里?计时器可以启动你的方法,但没有人会直接调用它来接收它的结果。 是每5秒调用一次这个方法,还是返回后每5秒才调用一次?即,如果调用时间过长,调用是否可以堆叠? @james:它从另一个类返回给调用者。 @DanielA.White:一个方法只能返回两次是什么意思 不过,我认为您缺少的要点是另一个类已经释放了对该方法的控制。计时器在不同的线程上运行。 【参考方案1】:你可以让你的调用者给带有计时器的类一个回调委托来传回值。
public class YourClass
public static void Run(string address, Action<string> callback)
Timer t = new Timer();
t.Elapsed += delegate
var response = callURL(address);
callback(response);
;
t.Interval = 3000;
t.Start();
public class OtherClass
public void ProcessResponse(string response)
// do whatever you want here to handle the response...
// you can write it out, store in a queue, put in a member, etc.
public void StartItUp()
YourClass.Run("http://wwww.somewhere.net", ProcessResponse);
更新:如果您希望调用者 (OtherClass
) 能够取消计时器,您只需将 Action<string>
更改为 Func<string, bool>
并让调用者 (@ 987654325@) 返回一个关于是否停止计时器的布尔值...
public class YourClass
public static void Run(string address, Func<string, bool> callback)
Timer t = new Timer();
t.Elapsed += delegate
var response = callURL(address);
// if callback returns false, cancel timer
if(!callback(response))
t.Stop();
;
t.Interval = 3000;
t.Start();
public class OtherClass
public bool ProcessResponse(string response)
// do whatever you want here to handle the response...
// you can write it out, store in a queue, put in a member, etc.
// check result to see if it's a certain value...
// if it should keep going, return true, otherwise return false
public void StartItUp()
YourClass.Run("http://wwww.somewhere.net", ProcessResponse);
【讨论】:
哇 james michael hare .. 太快了,太棒了。谢谢你。 :) 随时!当然,您仍然必须编写代码来处理您的响应,但这至少为您提供了框架...... 我昨天迷路了。我猜其余的应该不是问题。这是主要的。我试图将代码从 java 转换为 c#。我在这里迷路了。 一个简单的问题。如何在匿名方法中停止计时器? @Bharath:你想什么时候停止?你想在第一个项目之后停止它吗?检索特定结果后? X 分钟后?【参考方案2】:创建一个Thread
,让线程调用你想要的方法,给线程休眠5秒:
Thread loopThread = new Thread(new ThreadStart(this.MainLoop));
loopThread.Start();
private void MainLoop()
while(true)
// Do stuff
Thread.Sleep(5000);
【讨论】:
不能用定时器来实现吗?我希望线程调用的方法,在本例中为 MainLoop 返回一个值。 对不起,我失眠了,我讨厌 Sleep() :-) 使用线程是一种更简洁的方式,因为您不会使用计时器停止整个系统? @James:谢谢先生,在做了一些研究和这篇文章***.com/questions/1091710/… 之后。我同意 Timmers 在某些地方很有用,就像在这种情况下一样以上是关于asp 怎么样每隔3秒自动调用一个方法的主要内容,如果未能解决你的问题,请参考以下文章
我的笔记本电脑也是升级成win10后,桌面、任务栏每隔几十秒就自动刷新一下。请问你是怎么解决的。谢谢
WIN7任务栏每隔几十秒就会有一个相机和齿轮状标志的图标闪过导致游戏画面最小化,怎么回事?