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

Как запланировать выполнение кода C#

Я использую ASP.Net и С#. Я хочу синхронизировать что-то в определенное время. Я сделал метод для этого, и он работает. Но моя проблема заключается в том, как вызывать этот метод ежедневно в определенное время.

Клиент не доверяет никакому стороннему инструменту, поэтому не может его использовать.

Служба Windows не является хорошим решением.

Если я создаю веб-службу, как мне вызывать ее ежедневно в определенное время?

Например, я хочу запускать метод каждый день в 19:00.

29.05.2012

  • То, о чем вы говорите, - это работа cron. У вас может быть расписание Windows, запрашивающее вашу страницу в указанное время. 29.05.2012
  • @gideon, запрос расписания Windows, как? Пожалуйста, имейте в виду, что мое приложение использует сервер обмена, поэтому у нас нет RDP и достаточно прав, чтобы делать больше 29.05.2012
  • Хм. Не могли бы вы уточнить, каким сторонним инструментам ваш клиент не доверяет? 29.05.2012
  • Клиенты финансового домена, такие как AMEX, не доверяют ЛЮБЫМ сторонним инструментам :( Они хотят выполнять все задачи только в своей среде. 29.05.2012

Ответы:


1

При запуске добавьте элемент в HttpRuntime.Cache с фиксированным сроком действия. Когда срок действия элемента кеша истекает, выполняйте свою работу, например WebRequest или что-то еще. Повторно добавить элемент в кеш с фиксированным сроком действия.

private static CacheItemRemovedCallback OnCacheRemove = null;

protected void Application_Start(object sender, EventArgs e)
{
    AddTask("DoStuff", 60);
}

private void AddTask(string name, int seconds)
{
    OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
    HttpRuntime.Cache.Insert(name, seconds, null,
        DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,
        CacheItemPriority.NotRemovable, OnCacheRemove);
}

public void CacheItemRemoved(string k, object v, CacheItemRemovedReason r)
{
    // do stuff here if it matches our taskname, like WebRequest
    // re-add our task so it recurs
    AddTask(k, Convert.ToInt32(v));
}
29.05.2012
  • Это не повлияет на производительность, если я хочу выполнить задачу через день или более, мне нужно хранить кеш в течение одного или нескольких дней, не так ли? 29.05.2012
  • Если Зависит от того, сколько задач вам нужно кэшировать. очевидно, No задач не должно быть ограничено. 29.05.2012
  • @CoDeaDDict: Например, я хочу запускать метод каждый день в 19:00. Возможно ли это сделать через истечение срока действия кеша? 29.05.2012
  • Почему нет. это просто место, где вы можете делать что угодно, если ресурсы доступны. 29.05.2012
  • Хорошо спасибо. Если бы вы могли сказать мне, как? это было бы оценено. 29.05.2012
  • вызовите метод в этой строке // сделайте что-нибудь здесь, если оно соответствует названию нашей задачи, например, WebRequest 29.05.2012
  • @CoDeaDDict: Например, я хочу запускать метод каждый день в 19:00. Какое время должно быть записано в срок действия кеша, чтобы вызывать его ежедневно в 19:00? 29.05.2012
  • рассчитайте свое время в секундах от текущего времени до 19:00 и пропустите. 29.05.2012
  • Привет, Раб Наваз / Панкадж, мне нужно выполнять задачу аналогичного типа на моем общем сервере, где мое приложение является хостом, и выполнять какую-то задачу каждый день, поэтому я следую вашему заданному шагу, он не работает через несколько часов. Вы взломали эту ситуацию, особенно панкай, как для достижения вашего требования, пожалуйста, дайте мне знать. 07.04.2014

  • 2

    Вы можете использовать запланированную задачу Windows для запуска приложения (exe) или создать службу Windows и использовать таймер. Взгляните на Quartz.NET, который также можно использовать.

    29.05.2012
  • Quartz.NET имеет открытый исходный код, поэтому мы не можем его использовать. 29.05.2012
  • @PankajTiwari, но вы не можете зависеть от HttpRuntime и для ежедневных графиков работы. Это зацикливается 06.11.2012
  • Новые материалы

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

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

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

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

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

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

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