2011-08-17 122 views
0

iam在asp.net游戏上工作,我需要延迟触发器(它不存在)或在服务器端运行线程。服务器超时/延迟触发

常用的工具: MSSQL 2008 Express的 asp.net MVC3(剃刀)

简单的我想要做的游戏像TRAVIAN或其他一些网页浏览器的游戏,但IAM套牢攻击

。第一名球员需要训练单位。然后他可以挑选敌方玩家并指派单位进行攻击。然后攻击开始,并在一段时间后进行评估(当单位到达地图上的敌方玩家位置时)。 我不知道如何在这段时间后调用方法,即使用户在声明攻击后关闭浏览器也必须调用它。

我发现了mssql WAITFOR,但它不适合,因为可能有多个进程(攻击)。

最好的解决方案将是,如果我可以做一些像在服务器端的工作线程。这将检查是否有任何攻击单位到达敌方玩家并且应该计算战斗。

感谢为你回复

回答

0

我想你想时间表工作岗位或将被跟踪,当他们因执行任务。你可以从头开始寻找一个解决方案,但这是一个很常见的问题,所以你可以寻找一个适合你需求的调度库。例如。看看http://quartznet.sourceforge.net/

决定什么是对你的具体情况下的最佳解决方案去想想以下要求:

  • 你想坚持计划的作业(如果你的服务器重新启动后,应在工作生存的重启)?我承认是的。
  • 您是否需要活动的“代理”(进程,线程等)在到期时自动执行作业(例如,立即发送通知电子邮件),还是足以在任何时候执行/评估作业的受影响用户回来并调查他们的状态(当您为用户执行任何操作时按需执行)。
  • 如果您需要一个活跃的代理商,您必须找到一个托管该代理商的好地方。它可以是SQL Server Agent,它可以是一个Windows服务。如果您可以假设网络应用程序总是被玩家“使用”并因此保持活跃状态​​,那么“代理程序”也可以存在于Web应用程序中,或者无论如何,这些作业“立即”执行并非如此关键他们到期了。
+0

该项目托管在远程服务器(托管服务器),我没有选择运行这样的程序。我宁愿支持mssql服务器本身的东西。 – Mat

+0

为什么不在web应用程序中运行调度程序呢? –

+0

最小间隔是5分钟,我需要秒精度 – Mat