在后台C#中每小时运行一个方法[重复]

Posted

技术标签:

【中文标题】在后台C#中每小时运行一个方法[重复]【英文标题】:Running a method every hour in the background C# [duplicate] 【发布时间】:2016-11-05 04:32:26 【问题描述】:

我正在编写一个 web-api,并计划在其中存储“会话”数据。我想每小时调用一个方法来确保结束非活动会话。

数据库包含 3 个时间戳字段。 Session_Start、Session_End 和 Last_Activity。每次更新会话中的数据时,Last_activity 字段都会更新。

我写了一个方法来结束非活动会话,但是我如何在后台每小时调用一次该方法,而不干扰 webapi 的功能(我如何在后台运行代码并仍然允许人们使用webapi)?

【问题讨论】:

【参考方案1】:

听起来像一个具有一小时睡眠-唤醒生命周期的辅助线程应该可以解决问题。你考虑过吗? 在我不久前的一个项目上,我也有过同样的辩论。我们最终编写了一个 refresh 方法,并在每次加载某个表单时调用它,并在检查时间时执行代码。有点横向,但在项目范围内是可以接受的。

【讨论】:

【参考方案2】:

我认为你可以只使用计时器。

aTimer = new System.Timers.Timer(new System.TimeSpan(1,0,0).Milliseconds);
aTimer.Elapsed += ClearSessions;
aTimer.AutoReset = true;
aTimer.Enabled = true;

【讨论】:

以上是关于在后台C#中每小时运行一个方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

BackgroundWorker使用秒表更新经过的时间标签,由于调用C#而冻结[重复]

如何在tkinter中每10秒自动运行一次功能[重复]

如何在c#中使用命令提示符运行命令[重复]

在 C# 中每小时检查一次网页

如何在不同的线程c#中运行两种不同的异步方法[重复]

C#:在运行时获取类型参数以传递给通用方法[重复]