应用于系统启动

Shi*_*h11 0 mysql delphi windows-xp startup

我有一个内置的应用程序Delphi,它MySQL使用MyDAC componentsWindows XPOS 访问数据库.

我希望这个应用程序能够运行System Startup,所以我添加Application shortcut到该Startup文件夹中也添加了一个Registry key.

但是当我启动系统时,首先会弹出一条Microsoft错误消息

 Myapplication.exe has encountered a problem and needs to close.
Run Code Online (Sandbox Code Playgroud)

并要求报告错误.在此之后,应用程序出现另一个错误

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

我怎么克服这个?

任何帮助赞赏

Arn*_*hez 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
Run Code Online (Sandbox Code Playgroud)