Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C#. Вызывать метод в определенное время... / 18 сообщений из 18, страница 1 из 1
19.02.2013, 16:06
    #38157583
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Нужна помощь велмких гуру...
Цель: вызывать метод, который будет выполняться в определенное время... Будет создан Windows Сервер...
Сам метод выполнения создан и протестирован...
Но вот как его вызывать в определенное время для меня что-то стало камнем преткновения...

Для пробы сделал консольное приложение

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
using System.Configuration;
using System.Threading;

namespace Timer1
{
    class Program
    {
        private static System.Timers.Timer aTimer;
        // Массив минут, в которые надо вызывать задачу
        private static string[] arr_point_st = {"0","3","6","9","12","15","18","21","24","27","30","33","36","39","42","45","48","51","54","57"};
        
        static void Main(string[] args)
        {
            Console.WriteLine(DateTime.Now);
            //string point_start = ConfigurationManager.AppSettings["point_start"];
            //arr_point_st = point_start.Split(';');

            aTimer = new System.Timers.Timer();

            aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
            // Первый раз пускай проработает через секунду
            aTimer.Interval = 1000;
            aTimer.Enabled = true;

            Console.WriteLine("Press the Enter key to exit the program.");
            Console.ReadLine();

        }

        private static void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            aTimer.Stop();
            
            // Пусть это есть работа метода
            Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
            Thread.Sleep(3000);
            ////////

            // Теперь надо исправить интервал так, что бы вызов был в определенные минуты (arr_point_st)
            // Но как ??????
            aTimer.Interval = 10000;
            aTimer.Start();
        }

    }
}



Первый раз пусть метод проработает... поставлено через 1 сек...
Но когда метод проработал, надо определить в какое время ему надо проработать??? из массива arr_point_st и по моей логике надо исправить интервал таймера и запустить его снова...
Может быть кто-то решал уже данную задачу...
Плиз откликнитесь советом...
а лучше кодом...
...
Рейтинг: 0 / 0
19.02.2013, 16:29
    #38157620
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Владимир САБудет создан Windows Сервер...
Наверное, винсервис? :)
Данный вид приложения не подходит для выполнения в заданное время. Можно, конечно, сделать через задницу - сервис в холостую будет крутиться с итерациями в 5 сек., каждая итерация будет мониторить время запуска нужного кода.

P.S. Для подобных задач трупосаны используют taskschd.msc
...
Рейтинг: 0 / 0
19.02.2013, 16:46
    #38157667
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Владимир САЦель: вызывать метод, который будет выполняться в определенное время...

Quarts.Net
...
Рейтинг: 0 / 0
20.02.2013, 06:09
    #38158341
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
МСУВладимир САБудет создан Windows Сервер...
Наверное, винсервис? :)
Данный вид приложения не подходит для выполнения в заданное время. Можно, конечно, сделать через задницу - сервис в холостую будет крутиться с итерациями в 5 сек., каждая итерация будет мониторить время запуска нужного кода.

P.S. Для подобных задач трупосаны используют taskschd.mscНу я имел ввиду Службу Windows...
Да я уже говорил заказчику, что лучше бы сделать через "Планировщик заданий"... Но что-то его все тянет на WinСервис...
Переговорю снова...
...
Рейтинг: 0 / 0
20.02.2013, 07:40
    #38158374
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Владимир САДа я уже говорил заказчику, что лучше бы сделать через "Планировщик заданий"
А Вы сделайте, а заказчику не говорите
Пускай ваш сервис запускает планировщик.
...
Рейтинг: 0 / 0
20.02.2013, 08:09
    #38158388
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Дык, если через планировщик, то все задание наверное лучше сделать как консольное приложение, а вызывать его (задание) через планировщик...
Вот я о чем подумал...
Ну и вызывать его через планировщик, в определенное время...
Или все таки делать WinСервис ?
...
Рейтинг: 0 / 0
20.02.2013, 09:46
    #38158434
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Владимир САлучше сделать как консольное приложение, а вызывать его (задание) через планировщик...
Разумеется.
...
Рейтинг: 0 / 0
20.02.2013, 11:08
    #38158585
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Владимир САДык, если через планировщик, то все задание наверное лучше сделать как консольное приложение, а вызывать его (задание) через планировщик...

Я так и делаю :-) Меньше всего мороки и отлично всё работает. Quartz.Net нужен, если вы все-таки решитесь делать через WinService. Но это скорее извращение для такой простой задачи.
...
Рейтинг: 0 / 0
20.02.2013, 12:10
    #38158695
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
у меня это сделано через отдельную службу, которая каждый час запускает нужный процесс, что бы не зависеть от шадулера. Сделать такую службу дело не хитрое. Но делать, её лучше не в C# для экономии памяти
...
Рейтинг: 0 / 0
20.02.2013, 12:25
    #38158728
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Roman Mejtesлучше не в C# для экономии памяти О да...
...
Рейтинг: 0 / 0
20.02.2013, 12:31
    #38158744
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Все таки придется делать WinService... Уже начальник сказал, а это все...
Roman Mejtes...Но делать, её лучше не в C# для экономии памяти
buserО да...
Не понял... Лучше службу делать не в C# ? Почему? Что с памятью стало ?
...
Рейтинг: 0 / 0
20.02.2013, 12:43
    #38158779
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
ну дело добровольное, я пробовал давно, написанная на C# служба у меня весила в памяти около 3 мб
...
Рейтинг: 0 / 0
20.02.2013, 13:20
    #38158863
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Roman Mejtesу меня это сделано через отдельную службу, которая каждый час запускает нужный процесс
Почувствуй разницу между "каждый час" и "в определенное время".

Владимир САВсе таки придется делать WinService... Уже начальник сказал, а это все...
Остается только радоваться за "адекватность" твоего начальника.
...
Рейтинг: 0 / 0
21.02.2013, 14:22
    #38160737
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Создал WinServer, о чем писал выше...
Теперь про память хотел пообщаться...
Вижу что у меня жрет 10Мб...
Вопрос много это или мало... остается открытым...
...
Рейтинг: 0 / 0
21.02.2013, 14:33
    #38160771
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Владимир САВижу что у меня жрет 10Мб...

Если у вас Pentium-133, то наверное много.
...
Рейтинг: 0 / 0
21.02.2013, 14:38
    #38160781
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Arm79Владимир САВижу что у меня жрет 10Мб...
Если у вас Pentium-133, то наверное много.
Intel(R) Core(TM) i5-2400 CPU @3.10GHz 3.30GHz...
...
Рейтинг: 0 / 0
21.02.2013, 14:39
    #38160786
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
ОЗУ 4Гб
...
Рейтинг: 0 / 0
21.02.2013, 15:08
    #38160857
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
C#. Вызывать метод в определенное время...
Владимир САОЗУ 4Гб

4 * 1024 / 10 = 409.6 экземпляров вашего сервиса. А ведь это только физическая память. Вы имеете представление о понятии "виртуальная память"?

Иными словами: 10 Мб для обычной рабочей станции, тем паче сервера, - это ничто.

А если помнить, что в эти 10 входят общие библиотеки, которые используются и в другим сервисах, то можно особо не волноваться по поводу переполнения памяти
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C#. Вызывать метод в определенное время... / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]