以设定的间隔从服务器调用方法
本文关键字:服务器 调用 方法 | 更新日期: 2023-09-27 18:10:07
我正在编写一些代码,其中调用GetRoomAvailability()后从mvc动作方法,然后返回一个视图(mvc)到客户端。该方法创建一个新线程。以便每隔50分钟调用_repository.roomsAavailability()。我希望这个计时器在后台线程上继续调用这个存储库,而不必每隔50分钟在UI线程上再次调用getroomavailability()。我该怎么做呢?此刻
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()时只调用一次。
不要使用Timer
并尝试自己完成此操作。有很多陷阱。
相反,使用像Quartz这样的包。. NET设置一个循环的后台任务。这篇Scott Hanselman的文章给出了例子和更多细节。
不要忘记,您需要设置IIS以保持应用程序的活动。如果你写这篇文章是为了共享主机,那它是不可能的
方法完成后,您没有保持对计时器的引用,我的猜测是计时器正在被垃圾收集器处理,因为没有对它的引用