Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таймер и всё о нем 
:(
    Опции темы
DenWPF
Дата 15.2.2010, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



У меня такая задача.
есть время к примеру.


12-00
12-05
12-10

и на каждое время надо сделать несколько задач.
и они могут занять время больше чем 5 минут...
я боюсь что 12-05 просто перескочит. 

как это избежать?
PM MAIL   Вверх
Dobermann
Дата 16.2.2010, 04:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: 1
Всего: 0



Запусти задачу для 12-05 в другом потоке
PM   Вверх
nmn
Дата 16.2.2010, 06:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: 1
Всего: 1



используй таймер из System.Threading он реализован через потоки
PM Skype   Вверх
DenWPF
Дата 16.2.2010, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



Dobermann, я в них так и не разобрался=(
nmn, и как будет это работать...
таймер заработает в 12-05 и он будет ждать пока окончится работа других обработок, и потом запуститься ?

з.ы хотя как вариант задачи складывать в лист...
PM MAIL   Вверх
uranpro
Дата 16.2.2010, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: 1
Всего: 1





--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
Dray
Дата 16.2.2010, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 7.10.2003
Где: г. Всеволожск

Репутация: нет
Всего: 6



В 12-00 запустится первый поток, в 12-05 второй, 12-10 третий, все потоки будут работать параллельно. В том же порядке они и завершатся когда выполнится код. В такой схеме нужно будет позаботиться об общих ресурсах, делать lock где это нужно. А вообще если это что-то вроде пользовательского scheduling сервиса, то лучше предлагать пользователю ввести более широкий интервал для длительной задачи.
Если про многопоточность что-то не понятно, то спрашивай.


--------------------
忍者

user posted image
PM MAIL   Вверх
Dobermann
Дата 16.2.2010, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: 1
Всего: 0



Цитата(DenWPF @  16.2.2010,  12:06 Найти цитируемый пост)
Dobermann, я в них так и не разобрался=(

Неее...без них вообще никак!
PM   Вверх
DenWPF
Дата 16.2.2010, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



с потоками я вроде понял. но сейчас ещё не могу их протестить.

Thread t = new Thread(new ThreadStart(Go));
    t.Start();  
это будет запуск  Go в новом потоке.

Thread t = new Thread(new ThreadStart(Go));
    t.Start();  
  t.Start();  

а это два потока?


значит надо запускать в таймере???


а вот с таймером так и не понял...как каждую секунду проверять которое время? 


PM MAIL   Вверх
uranpro
Дата 16.2.2010, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: 1
Всего: 1



DenWPF, это один поток, не знаю что произойдет) TimeSpan



--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
DenWPF
Дата 16.2.2010, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



тогда я не черта не понял.

у меня есть класс в консруктор приходит List с инструкциями.

вот 12-00 запускается одина инструкция, в 12-05 другая. как это реализовать?
PM MAIL   Вверх
DEADLY
Дата 16.2.2010, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 23.8.2007

Репутация: 1
Всего: 1



Код

public static void Start()
        {
            try
            {
                int osecond = DateTime.Now.Second;
                int second = osecond;               
                while (true)
                {
                    second = DateTime.Now.Second;
                    if (second != osecond)
                    {
                        Execute();
                        osecond = second;
                        
                    }
                    Thread.Sleep(1);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }

Код

private static String getTime()
        {
            String hour = String.Empty;
            String min = String.Empty;            
            hour = Convert.ToString(DateTime.Now.Hour - Convert.ToInt32(TimeZone.CurrentTimeZone.IsDaylightSavingTime(System.DateTime.Now)));
            if (hour.Length == 1)
                hour = hour.Insert(0, "0");            
            min = DateTime.Now.Minute.ToString();            
            if (min.Length == 1)
                min = min.Insert(0, "0");            
            String cont = hour + min;            
            return cont;
        }

Execute();
Код

private static void Execute()
        {          
            try
            {                
               time = gettime();
               if (time == "1205")
                     {
                            ThreadStart sendDelegate = new ThreadStart(то что нада выполнять);
                            Thread sendThread = new Thread(sendDelegate);
                            sendThread.IsBackground = true;
                            sendThread.Start();  
                     }
               .......
            }
            catch
            { 
            }
        }


Это сообщение отредактировал(а) DEADLY - 16.2.2010, 13:17
PM MAIL   Вверх
DenWPF
Дата 16.2.2010, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



ого...спасибо.
буду тестить.

gettime()- это чисто ваша функция ?
можно же спарсить время и сравнить ...

вроде понял.
PM MAIL   Вверх
DenWPF
Дата 1.3.2010, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



эээ запускаю эту конструкцию и все зависает...
помогите=(
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.5361 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.