C# Завершение консольного приложения по таймеру

109
10 сентября 2019, 06:30

Доброго времени суток.

Прошу помочь разобраться в решении следующей проблемы.

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

Логика действий следующая: При старте приложения запускается таймер с интервалом в 1 час. Пока работает таймер, в параллель с ним работает цикл на проверку запущенного процесса. Если процесс за этот час не был завершен, то приложение закрывается, а если процесс завершился, то таймер останавливается и запускается последовательность действий.

В данный момент я реализовала следующее:

public static void Main(string[] args)
{
    Timer t = new Timer(ComputeBoundOp, 1, 0, 1000);
    Thread.Sleep(100000);
    t.Dispose();
    while (true)
    {
        var processes = Process.GetProcessesByName("ProcessName");
        if (processes.Length > 0)
            processes[0].WaitForExit();
        else
            break;
    }
    //Последовательность других действий.
}
private static void ComputeBoundOp(Object state)
{
    Console.WriteLine("In ComputeBoundOp: state={0}", state);
    Thread.Sleep(10000); 
}
Answer 1
private static void WaitProcess(string processName)
{
    while (true)
    {
        var process = Process.GetProcessesByName(processName).FirstOrDefault();
        if (process == null) break;
        process.WaitForExit();
    }
}
public static void Test()
{
    var ok = Task
        .Run(() => WaitProcess("chrome"))
        .Wait(TimeSpan.FromHours(1));
    if (ok)
    {
        //Последовательность других действий.
    }
}
READ ALSO
Как добавить проект Unittest-ов в Visual Studio Code ( Asp.Net Core)

Как добавить проект Unittest-ов в Visual Studio Code ( Asp.Net Core)

Есть проект, назовём его testProject и есть проект Unittest нужно что бы проект Unittest видел папку Models из проекта testProject, как это сделать?

109
Почему не выполняется метод объекта WMI?

Почему не выполняется метод объекта WMI?

Пытаюсь создать ManagementObject и выполнить какой-то его методПопытка номер 1:

100
Функция типа void

Функция типа void

Может ли быть рекурсивной функция типа void?

100
Как можно кэшировать данные в Xamarin Forms PCL

Как можно кэшировать данные в Xamarin Forms PCL

Подскажите есть ли какой либо способ кэшировать данные приходящие от сервера в проекте Xamarin Forms PCL?

99