【问题标题】:fire an action after 10 minutes [duplicate]10分钟后触发一个动作[重复]
【发布时间】:2011-07-06 16:40:42
【问题描述】:

可能重复:
ASP.Net:Best way to run scheduled tasks

如何在 ASP.NET 中使用 C# 在 10 分钟后触发服务器端操作

例如,如果用户创建了一个帐户,并且如果他的帐户在 12 小时内处于非活动状态,那么如何自动删除他的帐户。我需要一些与此类示例相关的内容。

应该和浏览器没有关系。一旦用户退出他的帐户,他的一些服务器端操作将在一段时间后自动执行。

【问题讨论】:

  • 你真的明白你在问什么吗?
  • 我认为 Windows 服务可能更适合此类清理/管理任务
  • 自动删除是什么意思 为什么需要这个
  • @stefan, @dorababu :我只是给了你一个例子。可能是删除数据库中的帐户或我们选择的其他帐户...
  • @stefan - 如果你不能回答/如果你不了解这个主题,我希望最好不要对此发表评论。希望你明白我的意思:-)

标签: c# asp.net


【解决方案1】:

我会在 global.asax 中设置一个 Timer Method,然后它可以进行清理操作。

为此,您将以下代码添加到 Application_Start:

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)

'--每 15 分钟保存一次翻译,在 appstart 后 15 秒开始 将 TimerDelegate 调暗为 Threading.TimerCallback = AddressOf Manager.DoWork

Dim MyTimer As Threading.Timer = New Threading.Timer(TimerDelegate, Nothing, TimeSpan.FromSeconds(15), TimeSpan.FromMinutes(10))

结束子

并实现一个例如使用工人方法的经理: Manager.vb:

公共共享子 DoWork()

'--Dow 工作...

结束子

【讨论】:

  • 你好克里斯,你的答案是正确的......但我可以期待 c# 中的相同语法
  • 由于我无法将代码作为评论发布,请尝试使用此在线工具转换代码片段:developerfusion.com/tools/convert/vb-to-csharp
【解决方案2】:

This thread 似乎有一些与您的问题相关的解决方案。

【讨论】:

    【解决方案3】:

    要确保无论人们关闭浏览器还是 IIS 回收都可以运行某些代码,您应该在服务器上运行一个 Windows 服务,然后您可以在其中使用某种任务调度框架。

    例如,我宁愿每天运行一次清理作业来解决这个问题,我会努力编写作业逻辑本身(如果真的需要),然后我会让 Windows 任务调度服务调用我的作业,所以不浪费时间重新发明轮子......

    【讨论】:

      【解决方案4】:

      您是否考虑过使用网络服务?这将独立于浏览器运行,并且可以为您运行长期计时器事件。

      http://msdn.microsoft.com/en-us/library/t745kdsh.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多