Nano Hash - криптовалюты, майнинг, программирование

С# Таймер для запуска, даже если система выключена или перезапущена

Я пытаюсь создать скрипт, который что-то говорит, показывает всплывающее окно через 1 день. Насколько я знаю, я могу сделать это с помощью Thread.Stop или с помощью System.Timers или многими другими способами. Но проблема с каждым из них заключается в том, что компьютер должен постоянно работать, чтобы каждый из этих методов давал желаемый результат в нужное мне время. По сути, я хочу, чтобы скрипт запускался с установкой моей программы, ждал ровно 24 часа, а затем отображал окно сообщения. Если компьютер включен в это время, то есть через 24 часа, он должен показывать окно сообщения при следующем запуске, но только если прошло 24 часа или более. Пожалуйста, помогите, я не могу найти подходящее решение для этого. любая помощь будет высоко оценена. Я думаю, что этого можно достичь, получив dateTime.Now и поместив его в файл, а затем сравнивая текущее системное время со временем в файле каждый час или около того, и если прошло 24 часа или более, показать окно сообщения. Пожалуйста помоги

26.09.2014

Ответы:


1

Если вам нужно всплывающее окно сообщения, вам понадобится приложение Windows Forms. Вот рабочий процесс того, как это будет работать:

  1. Приложение должно будет сохранять данные либо через базу данных, либо в файл.
  2. Когда приложение загружается впервые, оно проверяет либо базу данных, либо файл на наличие записи TriggerDate.
  3. Если TriggerDate существует, извлеките эту дату и сравните ее с сегодняшними датой и временем. Если текущая дата и время превышают наши TriggerDate, отобразите окно сообщения. Воссоздайте TriggerDate с текущей датой и временем плюс 24 часа.
  4. Если TriggerDate не существует, создайте его, заполнив текущую дату и время плюс 24 часа (например, DateTime.Now.AddHours(24)).
  5. Используйте Threading.Thread.Sleep(), чтобы поспать в течение 5 минут.
  6. Перейти к шагу 3 и повторить.

ИЗМЕНИТЬ

Код будет примерно таким:

private const string TriggerFile = @"C:\TriggerData\trigger.txt";
private DateTime _triggerDate;

if (!File.Exists(TriggerFile))
{
    using (StreamWriter sw = File.CreateText(TriggerFile))
    {
        sw.WriteLine(DateTime.Now.AddHours(24));
    }
}
using (StreamReader sr = File.OpenText(TriggerFile))
{
    _triggerDate = DateTime.Parse(sr.ReadToEnd());
}
while (true)
{
    if (DateTime.Now >= _triggerDate)
    {
        MessageBox.Show(@"Alert!");

        using (StreamWriter sw = File.CreateText(TriggerFile))
        {
            sw.WriteLine(DateTime.Now.AddHours(24));
            _triggerDate = DateTime.Now.AddHours(24);
        }
    }
    System.Threading.Thread.Sleep(60000*5); // Sleep for 5 minutes
}

Возможно, вы не захотите делать while(true). Вы хотите реализовать способ выхода из программы.

26.09.2014
  • Скажите, пожалуйста, как мне выполнить шаги 1, 2 и 3. Я тоже хочу сделать то же самое, просто не могу создать исходный код этих шагов. 26.09.2014
  • работал довольно хорошо... пришлось немного изменить.. использовал StreamWriter вместо File.CreateText 26.09.2014
  • Рад, что у тебя получилось. Мой пример был просто быстрым примером. Я знал, что вам придется изменить его для вашего сценария. 27.09.2014

  • 2

    Если я правильно понимаю, вы можете использовать способ сохранить «дату начала». Вы можете сохранить дату начала таймера и прочитать значение из своего скрипта, таким образом, вы можете рассчитать, прошло ли 24 часа или более с момента, когда вы присвоили значение дате начала. Вы можете использовать простой файл TXT для сохранения значения.

    26.09.2014
  • Было бы любезно с вашей стороны, если бы вы могли уточнить 26.09.2014

  • 3

    Я вижу два пути достижения этого:

    • Простой способ (но не связанный строго с C#) — использовать планировщик задач и создать задачу, которая будет запускать вашу программу на C# каждые 24 часа. Один из способов сделать это из установщика — использовать SchTasks.exe. Этот метод позволяет вам просто выйти из программы после того, как ваша работа будет выполнена, без необходимости явного ожидания следующего запуска.
    • Более сложный способ: создайте службу Windows, которая представляет собой программу, специально предназначенную для постоянной работы на главном компьютере. Однако эти программы немного сложнее писать. Дополнительные сведения о службах можно найти здесь. Однако вы можете не хотеть идти по этому пути, поскольку служба не может отображать пользовательские интерфейсы, такие как всплывающие окна.
    26.09.2014
  • спасибо, приятель.. просто скептически отношусь к планировщику задач... Если ничего не получится, сделаю это 26.09.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..