приложение при запуске системы - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть приложение, встроенное в Delphi, и оно обращается к базе данных MySQL, используя MyDAC components и Windows XP O.S. .

Я хочу, чтобы это приложение работало на System Startup, поэтому я добавил Application shortcut в папку Startup и добавил Registry key.

Но когда я запускаю свою систему, сначала появляется сообщение об ошибке Microsoft

 Myapplication.exe has encountered a problem and needs to close.

и запрашивает сообщение об ошибке. После этого появляется еще одна ошибка из приложения

 Exception EMyError in module MyApplication.exe
 Can't connect to MySQL server on 'localhost'(10061)
 Socket error on connect.

как мне преодолеть это?

любая помощь приветствуется

Ответы [ 2 ]

5 голосов
/ 08 ноября 2011

Некоторые подсказки:

  • Вы должны лучше реализовать Службу Windows , чтобы приложение запускалось еще до того, как первый пользователь войдет в систему;
  • Службы могут быть запущены до того, как сеть или БД будут готовы, поэтому вы получаете это исключение EMyError - в этом случае используйте Sleep(5000), чтобы подождать 5 секунд, затем повторите попытку, пока не произойдет подключение.

Типичный код, использующий услугу, может быть:

procedure TMyService.Execute;
var retry: boolean;
begin
  retry := true;
  repeat
    try
      ConnectToDatabase;
      retry := false; // connection success
    except
      on E: EMyError do 
        sleep(5000); // wait 5 seconds and retry
    end;
    if Terminated then
      exit; // avoid endless loop
  until not retry;
  // ... now you are connected and you can continue
4 голосов
/ 08 ноября 2011

Вам нужно реализовать попытку .. кроме цикла для вашего соединения. Если это не удается, следует подождать некоторое время и повторить попытку. Скорее всего, ваше приложение запускается раньше и / или быстрее, чем ваш экземпляр mysql.

...