应用于系统启动

时间:2011-11-08 10:17:56

标签: mysql delphi windows-xp startup

我有一个内置在Delphi的应用程序,它使用MySQLMyDAC components O.S.访问Windows XP数据库。

我希望此应用程序在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 个答案:

答案 0 :(得分:5)

一些提示:

  • 您应该更好地实施 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

答案 1 :(得分:4)

您需要为您的连接实现try .. except循环。如果失败,应等待一段时间再试一次。很可能你的应用程序比你的mysql实例更早和/或更快地启动。