C# 从服务器以设置的间隔调用方法
我正在编写一些代码,在从mvc操作方法调用GetRoomAvailability()之后,将视图(mvc)返回给客户端。该方法创建一个新的threading.timer类,以便每50分钟调用一次_repository.roomsAavailability()。我希望此计时器继续在后台线程上调用此存储库,而不必每隔50分钟在UI线程上再次调用GetRoomAvailability()。我该怎么做?此刻C# 从服务器以设置的间隔调用方法,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我正在编写一些代码,在从mvc操作方法调用GetRoomAvailability()之后,将视图(mvc)返回给客户端。该方法创建一个新的threading.timer类,以便每50分钟调用一次_repository.roomsAavailability()。我希望此计时器继续在后台线程上调用此存储库,而不必每隔50分钟在UI线程上再次调用GetRoomAvailability()。我该怎么做?此刻 public void GetRoomAvailability() { // checl
public void GetRoomAvailability()
{
// checl for room availability every 30 minutes
Timer timer = new Timer((e) =>
{
_repository.RoomAvailability();
if (true)
{
// write some code to see if values have been changes since last time
//_hub.ClientsUpdateRoomsAvailability();
}
}, null, 0, TimeSpan.FromMinutes(0.5).Milliseconds);
}
调用GetRoomAvailability()时,只调用一次。方法完成后,您没有保留对计时器的引用,我猜计时器正在被垃圾收集器处理,因为没有对它的引用。请不要使用
计时器,自己尝试这样做
相反,请使用类似于设置定期后台任务后台的包。给出了示例和更多细节
别忘了,您需要设置IIS以使应用程序保持活动状态。如果您是为了共享主机而写的,那么这是不可能的。您可能需要查看一些Thinkg,比如SignalR,以实时获取数据,而不是使用计时器……谢谢。根据您的推荐信,我使用Quartz.net成功地实现了这一点