我有一个 Windows 窗体应用程序,它从多个设备收集数据 - 并将该数据存储在本地 SQLite 数据库中。然后,在一段时间内,我需要将新记录上传到外部网络服务 - 这意味着我需要读取带有“WasUploaded = 0”字段的新记录,上传它们,然后设置“WasUploaded = 1”成功。今天我会像 10 年前那样做这件事——分叉一个新的后台线程,然后做无限循环:
while(true)
{
try
{
var newRecords = dbRepo.ReadNew(10); // read 10 records at a time
UploadToExternalWebservice(newRecords);
foreach (var r in newRecords)
{
r.WasUploaded = 1;
}
dbRepo.CommitChanges(newRecords);
}
catch (Exception ex)
{
Logger.LogError(ex);
}
Thread.Current.Sleep(15*1000);
}
但我开始怀疑 - 有没有更好的方法可以做到这一点?在这里使用 Tasks 库值得吗?...还有别的吗?
如果这很重要,我在 .Net 4.0 上。
谢谢你。