如何每隔一段时间就自动执行一段代码(比如调用一个函数)

freeflying1222 2010-04-06 05:05:56
比如,我想每隔5分钟就把DataSet里更新的数据存储到数据库。
我感觉好像应该用Timer,但具体怎么用不解。尤其是在Asp.net并发环境下……
能给点示例代码更好。
...全文
506 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
freeflying1222 2010-04-13
  • 打赏
  • 举报
回复
再顶一下,没人就结贴了
freeflying1222 2010-04-07
  • 打赏
  • 举报
回复
没人知道么?
airlch 2010-04-07
  • 打赏
  • 举报
回复
学习了
freeflying1222 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hhhh63 的回复:]

在Global文件的Application_Start事件中加入定时器,我实际使用的部分代码如下:
public static local.dsnews mynews = null;

protected void Application_Start(object sender, EventArgs e)
{
mynews = new local.dsnews();
}

n……
[/Quote]

这应该是我想要的,但System.Timers.Timer timernews = new System.Timers.Timer();不行啊,根本就没有不带参数的重载?

另外比如说我希望的不是在程序开始就开始计时,而是在第一次调用某方法之后,我怎么写,像这样:

public class TimesTest
{
static System.Threading.Timer timer;
public static void TriggerTimes(object o)
{
if (timer==null)
{
timer = new System.Threading.Timer(ShowResult,null,0,5*1000);
}
}

private static void ShowResult(object o)
{
Console.WriteLine(DateTime.Now);
}
}

这种写法,是不是会有多线程方面的问题,而且我总感觉这样写很怪。
freeflying1222 2010-04-07
  • 打赏
  • 举报
回复
可能是我没说清楚。

和AJAX完全没有关系,我根本用不到前台。我就在后台的程序里,比如BLL层,程序自动的每隔一段时间执行一段代码即可。

camperer 2010-04-06
  • 打赏
  • 举报
回复
ajax是个好方案,但要注意它要客户端浏览器来发出请求,也就是说如果客户端没有访问你的发送请求的页面,你的代码是不会被执行的。写在global中一定会执行,但它是影响全局的。
具体情况看你的需求了。
#2楼,GET可能会遇到“查询字符串过长”的问题,还是POST吧。。。
fuda_1985 2010-04-06
  • 打赏
  • 举报
回复
拒说timer会刷新,体验不是太好。ajax.dll的例子可以网上找找,或者看我博客里的那个前台调用后台方法的文章!
fuda_1985 2010-04-06
  • 打赏
  • 举报
回复
使用ajax.dll或者ajaxpro.dll或其它的
function getDocument()
{
pagename.functionServer();
setTimeout("getDocument()", 5*60*1000);
}
echo0808 2010-04-06
  • 打赏
  • 举报
回复
用ajax
hhhh63 2010-04-06
  • 打赏
  • 举报
回复
在Global文件的Application_Start事件中加入定时器,我实际使用的部分代码如下:
public static local.dsnews mynews = null;

protected void Application_Start(object sender, EventArgs e)
{
mynews = new local.dsnews();
}


namespace forexds.local
{
public class dsnews
{
private const int Interval = 4 * 60 * 1000;// 定时4分钟
private DataTable dtNews = null;
private ArrayList rsslist = new ArrayList();

public dsnews()
{
HData data = null;
try
{
data = new HData();
dtNews = data.GetTable("select * from news");
}
catch (Exception ex)
{
HLog.writeLog("dsnews_dsnews: " + ex.Message);
}
finally
{
if (data != null)
data.Dispose();
}

initsource();

System.Timers.Timer timernews = new System.Timers.Timer();
timernews.Interval = Interval;
timernews.AutoReset = true;
timernews.Enabled = true;
timernews.Elapsed += new System.Timers.ElapsedEventHandler(updateTable);
updateTable(null, null);

}


如果没有Global文件的话,在项目上点右键加之。
  • 打赏
  • 举报
回复
技术菜鸟,只知道这些了
  • 打赏
  • 举报
回复
我知道Ajax里从传送数据要用异步传输,
  var xHRObject = false;
if (window.XMLHttpRequest)
{
xHRObject = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xHRObject = new ActiveXObject("Microsoft.XMLHTTP");
}

function getData()
{
//Check to see if the XMlHttpRequest object is ready and whether it has
//returned a legitmate response
if (xHRObject.readyState == 4 && xHRObject.status == 200)
{
var xmlDoc = xHRObject.responseXML;
if (window.ActiveXObject)
{
//Load XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM");
xsl.async = false;
xsl.load("MenuDisplay.xsl");

//Transform
var transform = xmlDoc.transformNode(xsl);
var spanb = document.getElementById("menuhere");

}

else
{
var xsltProcessor = new XSLTProcessor();

//Load XSL
XObject = new XMLHttpRequest();
XObject.open("GET", "MenuDisplay.xsl", false);
XObject.send(null);

xslStylesheet = XObject.responseXML;
xsltProcessor.importStylesheet(xslStylesheet);

//Transform
var fragment = xsltProcessor.transformToFragment(xmlDoc, document);

document.getElementById("menuhere").innerHTML = "";
document.getElementById("menuhere").appendChild(fragment);


}

//Display results of transform
if (spanb != null)
{
spanb.innerHTML = transform;
}

//Clear the object and call the getDocument function in 10 seconds
//此乃注册getDocument()方法,10秒一次。
xHRObject.abort();
setTimeout("getDocument()", 10000);
}
}

function getDocument()
{
//Reset the function
xHRObject.onreadystatechange = getData;

//IE will cache the GET request the only way around this is to append a
//different querystring. We add a new date and append it as a querystring
xHRObject.open("GET", "SuiteList.xml?id=" + Number(new Date), true);

xHRObject.send(null);
}

C#里的类似,代码一时找不到
  • 打赏
  • 举报
回复
使用异步调用 等LX来贴代码
Visual Studio Code 是由微软开发的一款免费、开源、跨平台的现代化轻量级代码编辑器,自发布以来迅速成为全球开发者最受欢迎的工具之一。它结合了编辑器的轻便性和集成开发环境(IDE)的强大功能,支持多种编程语言和开发场景,核心特点: 1. 跨平台支持 可在 Windows、macOS 和 Linux 上运行,保持一致的用户体验。 2. 轻量级与高性能 启动速度快,占用资源少,适合处理大型项目或低配置设备。 3. 智能代码补全 内置 IntelliSense(智能感知),提供代码提示、参数信息、快速修复等功能,支持 JavaScript、TypeScript、Python、C++ 等主流语言。 4. 内置终端 直接在编辑器内打开集成终端(支持 PowerShell、CMD、Bash 等),方便执行命令行操作。 5. 调试工具 内置调试器,支持断点、变量监视、调用堆栈查看等,无需离开编辑器即可调试代码。 6. Git 集成 直接通过侧边栏管理 Git 仓库,支持提交、分支切换、冲突解决等操作。 7. 丰富的扩展生态系统 通过 Extensions Marketplace 可安装数千款插件,扩展功能包括: 语言支持:如 Java、Go、Rust 等。 主题与图标:自定义界面风格。 工具集成:如 Docker、Kubernetes、数据库连接等。 效率工具:如 REST Client、Live Server 等。 8. 自定义与主题 支持修改键盘快捷键、界面主题、文件图标等,打造个性化开发环境。 9. 多光标编辑 按住 Alt(Windows/Linux)或 Option(macOS)点击可添加多个光标,同时编辑多处代码。 10. 远程开发支持 通过 Remote - SSH、Remote - Containers 等扩展,可直接连接远程服务器或开发容器,实现无缝协作。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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