« first day  last day (14 days later) » 

4:59 AM
@MaximK Добрый день! вы тут?
 
5:40 AM
да
 
 
3 hours later…
8:44 AM
                        foreach (DataRow row in dt.Rows)
                        {



                            string dbStr = row["shedule_dt_send_daytime"].ToString();
                            string tmnmru = row["time_name_ru"].ToString();

                            DateTime dtbeg = Convert.ToDateTime(row["shedule_dt_beg"]);
                            DateTime dtend = Convert.ToDateTime(row["shedule_dt_period_end"]);


                            //Разделяем строку на части
                            string[] splitStr = dbStr.Split(':');
короче вот так я делаю
проблема в том, что таймер не включается(раньше работал, если выбран "week")
уже надоел этот таймер меня
@MaximK в чём может быть проблема?
 
9:04 AM
@MaximK если на интервал поставить waitTime_ms он работает
 
10:03 AM
Вот ты посчитал время до запуска. waitTime_ms
Создаешь таймер и запускаешь с параметром myTimer.Interval = waitTime_ms;
Он создался и ждет назначенного времени. Теперь в таймере в событии OnTimeout как только оно сработает ставим новый интервал, который будет соответствовать неделе и т.д.
Т.е. тебе к твоему классу MyTimer надо добавить свойство Period. Его значение будет равно 86400000 для дня...
В самом таймере пишешь this.Interval = this.Period/
Таким образом сначала таймер будет ждать начала, а потом будет срабатывать с нужной периодичностью.
 
11:04 AM
public object period { get; set; } // создал свойство
значение (86400000) куда писать
 
11:17 AM
@MaximK покажите пожалуйста!
 
11:59 AM
создал для каждого CASE свой период, и вставил значение соответственно. Дальше не могу разобраться(((
 
@propro17 вставлять там, где таймер что-то пишет в файл или БД
 
@MaximK в событии OnTimeout создать новый таймер???
 
нет.
 
я совсем не понял
(
 
this.Interval = this.period;
и дальше код добавления в файл/базу
 
12:15 PM
покажите на одном CASE дальше я сам попробую сделать
 
покажи код самого таймера, где он пишет в базу
 
static void OnTimeout(object sender, System.Timers.ElapsedEventArgs e)
            {

                var s_id = ((MyTimer)sender).s_id.ToString();
                var alg = ((MyTimer)sender).alg.ToString();
                var date = ((MyTimer)sender).datetime;




                //var comment = new[] { ((MyTimer)sender).comment.ToString() };
                //var beg = new[] { ((MyTimer)sender).Dt_Begin };
                //var end = new[] { ((MyTimer)sender).Dt_Period_End };
                //string upd = string.Format("UPDATE ALg_stack SET dt_create=GETDATE() WHERE id=(SELECT id from a
 
вот здесь самой первой строчкой перед var s_id и пиши
 
12:30 PM
case "day":
                                        {
                                            if ((targetHourOfDay != nowHour) || (DateTime.Now > DateTime.Parse(dbStr.Substring(2))))
                                            {


                                                // Посчитаем разницу между днями
                                                int waithour = (nowHour < targetHourOfDay) ? targetHourOfDay - nowHour : (24 - nowHour) + targetHourOfDay;

                                                startDay = DateTime.Now.AddHours(waithour);
@MaximK Вот что я сделал
@MaximK this тут ошибка
keyword this is not valid in a static property
 
12:51 PM
@MaximK keyword this is not valid in a static property как мне добавить в свой класс?
 
1:43 PM
@propro17 ((MyTimer)sender).Interval = ((MyTimer)sender).period;
 

« first day  last day (14 days later) »