Как я генерирую предупреждение в определенное время в C#?

Мне нужно было использовать RunPython ("import exceltest; exceltest.excelTest(r'" & ThisWorkbook.FullName & "')")

27
задан Ricardo Altamirano 29 June 2012 в 23:16
поделиться

4 ответа

Используйте класс System.Threading.Timer :

var dt = ... // next 8:00 AM from now
var timer = new Timer(callback, null, dt - DateTime.Now, TimeSpan.FromHours(24));

Делегат обратного вызова будет вызываться в следующий раз, когда будет 8:00 утра и каждый Через 24 часа после этого.

См. этот вопрос SO , как рассчитать следующее событие в 8:00 утра.

46
ответ дан 28 November 2019 в 04:56
поделиться

Разрабатывая ответ dtb, я так и реализовал.

  private void Form1_Load(object sender, EventArgs e)
    {
        System.Threading.TimerCallback callback = new TimerCallback(ProcessTimerEvent);

        //first occurrence at
        var dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 10, 0, 0);

        if (DateTime.Now < dt)
        {
            var timer = new System.Threading.Timer(callback, null, 
                                               //other occurrences every 24 hours
                            dt - DateTime.Now, TimeSpan.FromHours(24));
        }

    }

    private void ProcessTimerEvent(object obj)
    {
        MessageBox.Show("Hi Its Time");
    }
9
ответ дан lsalamon 28 November 2019 в 04:56
поделиться
private void Run_Timer()
    {
        DateTime tday = new DateTime();
        tday = DateTime.Today;
        TimeSpan Start_Time = new TimeSpan(8,15,0);
        DateTime Starter = tday + Start_Time;
        Start_Time = new TimeSpan(20, 15, 0);
        DateTime Ender = tday + Start_Time;
        for (int i = 0; i <= 23; i++)
        {
            Start_Time = new TimeSpan(i, 15, 0);
            tday += Start_Time;
            if (((tday - DateTime.Now).TotalMilliseconds > 0) && (tday >= Starter) && (tday <= Ender))
            {
                Time_To_Look = tday;
                timer1.Interval = Convert.ToInt32((tday - DateTime.Now).TotalMilliseconds);
                timer1.Start();
                MessageBox.Show(Time_To_Look.ToString());
                break;
            }
        }
    }

Мы можем использовать эту функцию для запуска таймера на время или изменить его на определенное время: D

0
ответ дан albertein 28 November 2019 в 04:56
поделиться

Должно ли предупреждение создаваться вашей программой? Альтернативный подход - использовать запланированную задачу (в Windows) для генерации предупреждения. Возможно, вам потребуется написать небольшую программу, которая собирает любую информацию из файлов данных вашего основного приложения и т. Д.

Есть несколько основных преимуществ использования этого подхода:

  1. Вам не нужно писать какой-либо код для поддержки особенность. Вы используете что-то встроенное в операционную систему. Пример для Windows, но в других ОС есть такая же функция. Вы можете сконцентрировать усилия на разработке и поддержке на собственном коде.
  2. Ваше основное приложение не должно быть запущено, чтобы задача запускалась.
1
ответ дан 28 November 2019 в 04:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: