Как запланировать задачу каждую минуту в С# 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);

Что не работает? Вам нужно сузить проблему, чтобы получить любую помощь.

Athanasios Kataras 13.12.2020 16:33

@AthanasiosKataras, сначала мне нужно знать, нахожусь ли я на правильном пути для того, что мне нужно делать ... также, когда я сказал, что это не работает, это означает, что работа не происходит каждую минуту, и когда я отлаживаю ее, делаю только один цикл. ..

Khalid Ab 13.12.2020 16:45

В идеале веб-приложение должно быть полностью апатридным и вообще не взаимодействовать с файлами. Что это за файлы Excel и что с ними происходит? Можно ли сохранять данные и управлять ими с помощью более подходящего механизма (например, бессерверной функции или отдельного API сохранения)?

Daniel Mann 13.12.2020 16:47

@DanielMann это просто запуск чего-то ... я имею в виду, поставить триггер, когда я получаю новые данные файла, чтобы сделать это .... и все, что происходит внутри try catch, уже работает, но когда я помещаю он внутри таймера не работает

Khalid Ab 13.12.2020 16:54

@KhalidAb Я не говорю, что ты не можешь этого сделать. Я говорю, что вы не должны, потому что это плохая архитектура. Если это игрушечное приложение, это одно, но если это настоящее корпоративное приложение, которое будет использоваться в масштабе вашей организации, вы должны убедиться, что оно спроектировано должным образом.

Daniel Mann 13.12.2020 17:39

@DanielMann спасибо за совет. Он будет использоваться в масштабе наверняка, но я получил ваш совет, спасибо

Khalid Ab 14.12.2020 12:22
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
336
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нахожу решение с помощью HangFire, для этого есть nugets и несколько уроков на YouTube, чтобы показать, как это работает. действительно прост в использовании!

Другие вопросы по теме