c# - 使用计时器来延迟方法
问题描述
我正在开发一个停车场应用程序,我希望在 30 秒后设置一个可用的停车场设置超时。我正在使用 system.timer 来实现它。这是我的代码:
internal class UpdateAvailableCarparkCommand
{
private readonly CarParkContext _context;
private readonly ApplicationUser _user;
private readonly DateTime _availableDate;
//constructor
//...
private void SetTimeOut{
//set the timeOut field in the database
var existingCarPark = _context.AvailableCarParks.FirstOrDefault(cp => cp.CarParkOwner.Id == _user.Id && cp.DayAvailable == _availableDate.Date);
existingCarPark.timeOut = true;
_context.SaveChanges();
}
private AvailableCarPark{
//create a new availableCarpark
var availableCarPark = new AvailableCarPark{
//...
//...
}
//After an availableCarpark is created start the timer
//timer wait for 30 seconds then timeout the availableCarpark
_aTimer = new System.Timers.Timer(30000);
// Hook up the Elapsed event for the timer.
_aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
_aTimer.AutoReset = false;
_aTimer.Enabled = true;
return availableCarPark;
}
private void OnTimedEvent(Object source, ElapsedEventArgs e)
{
SetTimeOut();
}
但是 SetTimeOut() 从来没有用计时器调用过,我做错了什么?我也尝试过使用 System.Threading 计时器并没有让它工作。如果 threading.timer 更好,我该如何实现呢?感谢您的任何建议。
解决方案
推荐阅读
- angular - BehaviourSubject 只发出一次值
- c# - C# MongoDB 和投影。因序列化异常而失败
- firebase - 无法在 Firebase 云功能助手中获得用户响应
- python - 使用python在文件中搜索这些字符串后如何打印?
- stata - 在 estout 命令生成的文件中添加 TeX 代码
- hibernate - Hibernate 查询缓存 LazyInitializationException
- c++ - 为什么三元操作失败不会在try catch中咳嗽
- java - 向Firebase写入数据只能在刚登录后才能工作,除非退出并重新登录才能成功
- python - 无法运行Qt设计器编译的python代码
- python - 错误:“egg_base”选项中的错误:“src”不存在或不是目录