Установка времени ожидания в настольном приложении .net - PullRequest
0 голосов
/ 27 августа 2009

Привет! Я создал небольшое приложение для перемещения некоторых файлов и помещения их в базу данных. Это работает хорошо, за исключением того, что приложению нужен тайм-аут.

Если мое приложение не выполнило задачу в течение 2 часов, оно снова открывается и блокирует все. Я должен сказать, что, если мое приложение было открыто в течение 2 часов, закройте его.

Одна мысль была, можете ли вы установить тайм-аут в приложении. У меня есть Google для этого и я нашел кое-что в system.threading о timeout = infinite и threading.sleep = 200, но не совсем понимаю

Еще одна мысль - использовать таймер и считать до 2 часов, а затем вызывать метод close, это выглядит как обман.

Любые идеи по времени в C # или Vb


К сожалению, это не для соединения с БД, это не то место, где происходит сбой приложения.

Ответы [ 3 ]

1 голос
/ 27 августа 2009

Как насчет одновременной работы только одного экземпляра вашего приложения?

Полагаю, вы выполняете планирование: посмотрите на этот код как на способ предотвращения нескольких экземпляров вашего приложения без изменения расписания.

static void Main(string[] args)
{
    Mutex flag = new Mutex(false, "UNIQUE_NAME");
    bool acquired = flag.WaitOne(TimeSpan.FromMilliseconds(0));  // 0 or more milliseconds
    if (acquired)
    {
        Console.WriteLine("Ok, this is the only instance allowed to run.");

        // do your work, here simulated with a Sleep call
        Thread.Sleep(TimeSpan.FromSeconds(5));

        flag.ReleaseMutex();
        Console.WriteLine("Done!");
    }
    else
    {
        Console.WriteLine("Another instance is running.");
    }
    Console.WriteLine("Press RETURN to close...");
    Console.ReadLine();
}

Пожалуйста, не бросайте свой Mutex ...; -)

НТН

0 голосов
/ 27 августа 2009

Возможно, более подходящим является тайм-аут для объектов DbConnection / DbCommand (посмотрите MSDN)

0 голосов
/ 27 августа 2009

А как насчет другого варианта? Установите флаг, который говорит, запущен ли в данный момент процесс или нет.

Если процесс запущен, не запускайте второй и не закрывайте первый, или может быть установлен таймер, и повторите проверку через несколько минут (?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...