c# - 如何在 c# blazor 中每分钟安排一次任务
问题描述
我需要每分钟安排一次工作,实际上,我需要比较文件的日期时间,看看它是否是新的,如果是,我使用这个文件的数据来填充另一个 excel 文件
我发现了一些计时器示例的想法,并且仅使用 console.writeline 作为示例,它就可以很好地工作,但是当我要求像我说的那样做更大的事情时,它不起作用....
Startup.cs
in the Configure() method
var startTimeSpan = TimeSpan.Zero;
var periodTimeSpan = TimeSpan.FromMinutes(1);
var timer = new System.Threading.Timer((e) =>
{
try
{
string filePath = $"{Directory.GetCurrentDirectory()}{@"\wwwroot\Ressources\mydatafile.txt"}";
DataTable tbl = new DataTable();
string[] lines = System.IO.File.ReadAllLines(filePath);
var titrecolunTest = lines[0].Split('\t');
foreach (var titrecolon in titrecolunTest)
{
tbl.Columns.Add(new DataColumn(titrecolon.ToString()));
}
foreach (string line in lines.Skip(1))
{
var cols = line.Split('\t');
DataRow dr = tbl.NewRow();
for (int cIndex = 0; cIndex < cols.Length; cIndex++)
{
dr[cIndex] = cols[cIndex];
}
tbl.Rows.Add(dr);
}
string fileNameTEST = @"wwwroot/Ressources/Template.xlsx";
FileInfo fileInfo = new FileInfo(fileNameTEST);
using (ExcelPackage pck = new ExcelPackage(fileInfo))
{
ExcelWorksheet worksheetData = pck.Workbook.Worksheets["Data"];
worksheetData.Cells["A2"].LoadFromDataTable(tbl, false);
//mettre number format sur les collones AC AI AJ AK AL AM AN
int nbrRows = worksheetData.Dimension.End.Row;
foreach (var cell in worksheetData.Cells["AI2:AN" + nbrRows])
{
cell.Value = Convert.ToDouble(cell.Value);
}
foreach (var cell in worksheetData.Cells["AC2:AC" + nbrRows])
{
cell.Value = Convert.ToDouble(cell.Value);
}
worksheetData.Cells["AI2:AN" + nbrRows].Style.Numberformat.Format = "0";
worksheetData.Cells["AC2:AC" + nbrRows].Style.Numberformat.Format = "0";
pck.Save();
}
}
catch (Exception)
{
throw;
}
}, null, startTimeSpan, periodTimeSpan);
解决方案
我通过使用 HangFire 找到了一个解决方案,它有 nugets 和一些 youtube tuto 来展示它是如何工作的。真的好用!
推荐阅读
- javascript - 在 JavaScript 中使用条件 require() 语句
- python - Python - 如果不存在则创建一个记录器
- android - (Android)每个Gridview行内的按钮与焦点问题
- mysql - 如何在 IntelliJ 中使用 Spring 设置 MySQL 数据库连接?
- node.js - Puppeteer 未在专用 GPU 上运行
- javascript - 从js中的嵌套对象中提取键值
- amazon-cloudformation - AWS 堆栈输出 ECR 映像名称
- javascript - 将单个添加到 ajax 添加的 javascript 行
- r - Capture.output 不考虑 r 中的控制台大小
- html - 使用 python urllib3 获得对网络服务器的授权访问时出现问题