c# - 如何使这种仅在第一次不适用于特定操作的延迟..但它应该稍后应用?C#
问题描述
我有一个每秒更新数据库的功能(作为来自某个网络的连续数据)我想延迟该更新功能..因为它会每 5 分钟更新一次数据库表..这是我的代码
if (ip==StrIp)
{
Task.Delay(300000).ContinueWith(_=>
{ //I'm Using Task.Delay to make delay
var res= from i in dc.Pins //LINQ Query
where i.ip== ip
select i;
for each (var p in res)
{
p.time= System.DateTime.Now,
p.temperature= temp,
.
. //some other values
.
};
datacontext.submitChanges();
});
}
它每 5 分钟工作一次并更新数据,现在我希望数据仅在应用程序启动时第一次立即更新,但之后它应该每 5 分钟更新一次.. 但是现在我的代码没有这样做.. 如何我可以做出这样的延迟,第一次忽略操作,但适用于即将到来的数据迭代..?提前致谢
解决方案
您可以使用标志来确定它是否是第一次调用您的方法,例如:
private uint _counter = 0;
public YourMethod()
{
if (ip == StrIp)
{
Action<Task> action = _ =>
{
var res = from i in dc.Pins //LINQ Query
where i.ip == ip
select i;
//...
datacontext.submitChanges();
};
if (_counter++ == 0)
action();
else
Task.Delay(300000).ContinueWith(action);
}
}
推荐阅读
- r - R:文件名列表结果无法识别实际读取文件(文件名字符编码问题)
- html - 更改相对 div 中绝对按钮的顺序
- pandas - Pandas Dataframe:将列拆分为多列
- python - 在 TCP recv() 中只接收 4 kb
- php - HTML5 响应式一页站点,url 中带有 php 变量
- ionic-framework - 离子电容器文件系统文件存在
- angular - Angular Service Worker 不适用于导航 URL(离线模式)
- javascript - 我的 ES6 导入是从索引文件还是直接从导出文件读取?
- ios - 快速获取待处理本地通知的剩余时间的问题
- c# - c# version 8 Target-typed new-expressions error requires (), [], or {} after type