мне нужно планировать работу каждую минуту, на самом деле мне нужно сравнить дату и время файла, чтобы увидеть, является ли он новым, и если да, я использую данные этого файла для заполнения другого файла 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);
@AthanasiosKataras, сначала мне нужно знать, нахожусь ли я на правильном пути для того, что мне нужно делать ... также, когда я сказал, что это не работает, это означает, что работа не происходит каждую минуту, и когда я отлаживаю ее, делаю только один цикл. ..
В идеале веб-приложение должно быть полностью апатридным и вообще не взаимодействовать с файлами. Что это за файлы Excel и что с ними происходит? Можно ли сохранять данные и управлять ими с помощью более подходящего механизма (например, бессерверной функции или отдельного API сохранения)?
@DanielMann это просто запуск чего-то ... я имею в виду, поставить триггер, когда я получаю новые данные файла, чтобы сделать это .... и все, что происходит внутри try catch, уже работает, но когда я помещаю он внутри таймера не работает
@KhalidAb Я не говорю, что ты не можешь этого сделать. Я говорю, что вы не должны, потому что это плохая архитектура. Если это игрушечное приложение, это одно, но если это настоящее корпоративное приложение, которое будет использоваться в масштабе вашей организации, вы должны убедиться, что оно спроектировано должным образом.
@DanielMann спасибо за совет. Он будет использоваться в масштабе наверняка, но я получил ваш совет, спасибо
Я нахожу решение с помощью HangFire, для этого есть nugets и несколько уроков на YouTube, чтобы показать, как это работает. действительно прост в использовании!
Что не работает? Вам нужно сузить проблему, чтобы получить любую помощь.