Вы должны войти, чтобы создавать сообщения и темы.

Работа со временем

Всем приветы!)
Сделал программу, которая запускает нужный мне софт в определённое время и закрывает так же в нужное для меня время.
Но бывает так, что нужный софт в процессе работы вылетает, а до его закрытия было ещё несколько часов..
И пока не наступит вновь то время, в которое он должен запуститься не выполняется нужная мне работа.

Подскажите пожалуйста, как просчитать, что время закрытия в формате (hh:mm) ещё не наступило и чтобы софт после вылета, снова запускался..
Вот в этом коде указано, если текущее время не соответствует времени закрытия и отсутствует нужное окно программы, то нужно запустить ту самую программу, но в таком случае и после времени закрытия программа будет запускаться..

Код

if (!closeTime.Equals(currentTime.Text))
                {
                    IntPtr target_hwnd = FindWindowByCaption(IntPtr.Zero, procName);
                    if (target_hwnd == IntPtr.Zero)
                    {
                        Process process = Process.Start(new ProcessStartInfo
                        {
                            FileName = "cmd",
                            Arguments = "/c " + procLine,
                            UseShellExecute = false,
                            CreateNoWindow = true,
                        });
                        output.Text += $"Запускаю \"{procName}\".\r\nЗакрытие в {closeTime}\r\n\r\n********************************************";
                        output.Text += "\r\n";

                    }
                    else
                    {
                        // Nothing to Do
                    }
                }

 

Приветствую.
Если не ошибаюсь, то с DateTime работают стандартные логические операторы вроде >, <, >=, <= и т.д.
Сравнивай DateTime.Now (т.е. сейчас) с тем конечным временем.

Цитата: Adler от 24.08.2021, 19:10

Приветствую.
Если не ошибаюсь, то с DateTime работают стандартные логические операторы вроде >, <, >=, <= и т.д.
Сравнивай DateTime.Now (т.е. сейчас) с тем конечным временем.

Дело в том, что время закрытия у меня указано в текст.файле.
И соответственно невозможно применить DateTime к string...
Можно ли, как-то записать в переменную DateTime определённое время, а не текущее?

Ну так в текстовом файле можно писать стрингом время в формате легко конвертируемом в DateTime и работать далее уже с ним. В Google полно примеров.

Цитата: Adler от 24.08.2021, 20:17

Ну так в текстовом файле можно писать стрингом время в формате легко конвертируемом в DateTime и работать далее уже с ним. В Google полно примеров.

Сделал так:

var openDT = DateTime.Today.AddHours(Convert.ToUInt32(openTime.Remove(2))).AddMinutes(Convert.ToUInt32(openTime.Remove(0, 3)));

В итоге получил сегодняшнюю дату с заменой часов и минут с текстового поля "openTime"