delphi服务应用程序在15秒后停止,计时器不执行

2023-12-03

我想在 Delphi 中制作服务应用程序,每天下午 02:00 运行并复制一些文件。所以我用了定时器。但控制不会发生计时器事件并且服务会在 15 秒内终止。我写了一个关于定时器事件的代码。如何在服务中使用计时器?请帮忙。提前致谢。

我的代码在这里:

unit untMain;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.SvcMgr, Vcl.Dialogs, Vcl.ExtCtrls, DateUtils, Vcl.Forms,
untCommon;

type
TsrvBackupService = class(TService)
tmrCopy: TTimer;
procedure tmrCopyTimer(Sender: TObject);

private
strlstFiles : TStringList;
{ Private declarations }
public
{ Public declarations }
end;

var
srvBackupService: TsrvBackupService;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
srvBackupService.Controller(CtrlCode);
end;


procedure TsrvBackupService.tmrCopyTimer(Sender: TObject);
var
strCurTime   : string;
strBKPpath   : string;
strBKPTime   : string;
NowDay       : word;
NowMonth     : word;
NowYear      : word;
NowHour      : word;
NowMin       : word;
NowSec       : word;
NowMilli     : Word;
begin
  DecodeTime(now,NowHour,NowMin,NowSec,NowMilli);
  strCurTime := IntToStr(NowHour)+':'+IntToStr(NowMin);
  strBKPTime := '14:00'
  strBKPpath := ExtractFilePath(Application.ExeName);
  if strCurTime = strBKPTime then begin
     Try
           CopyFile(PChar('c:\datafile.doc'),PChar(strBKPpath + 'datafile.doc'),true);
     except
        on l_e: exception do begin
           MessageDlg(l_E.Message,mtError,[mbOk],0);
        end;
     end;
  end;
end;

end.

使用在 OnStart 事件中启动的简单线程代替计时器。

教程在这里:

http://www.tolderlund.eu/delphi/service/service.htm

TTimer 更适合 GUI 应用程序。他们需要一个消息泵(参见here):

TTimer 需要一个正在运行的消息队列才能接收 WM_TIMER消息允许OS将消息传递给HWND, 或者触发指定的回调

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

delphi服务应用程序在15秒后停止,计时器不执行 的相关文章

随机推荐

  • MySQL备份数据库

    我尝试从我的 mysql 服务器备份数据库 我使用的是MYSQL 5 5 我使用以下命令来备份数据库 mysqldump root admin project gt projectbackup sql 我的用户名 root 密码 管理员 数
  • 离子原色动态变化

    有没有办法制作一个单独的主题 例如称为 BlueTheme 当主题激活时我可以在其中更改 colors 主要 次要 危险等变量 或者我是否必须手动更改应用这些颜色的类和位置 例如 BlueTheme Whenever this theme
  • 让 Paypal 立即重定向?

    PayPal 交易完成后 PayPal 会显示以下内容 Thanks for your order Your payment of XXXX XX USD is complete You re now going back to MYSIT
  • TinyMCE 4.2 - 获取新的(核心)图像工具来将(API)编辑后的图像保存为文件?

    如果这是重复的 我很抱歉 我还没有发现任何与此相关的问题 新的 TinyMCE 4 2 图像工具将图像保存为 base64 数据 而不是目录中的图像文件 在新发布的TinyMCE 4 2中有一个新的内联图像编辑器 参考 图像工具 效果很好
  • Laravel 迁移 150 错误

    我的迁移文件有错误 但是我找不到任何错误解决方案 当我运行迁移命令时 我在以下系统上收到该错误 Illuminate Database QueryException SQLSTATE HY000 General error 1005 Can
  • 使用shinymanager R嵌入图像

    我有一个闪亮的应用程序 我使用闪亮管理器包来处理用户身份验证 我正在尝试添加 www 文件夹中的图片作为身份验证背景 这是一个工作示例 当您运行该应用程序时 您当前将在背景中看到 R 徽标 我的 www 文件夹中有一个名为 pabackgr
  • SSIS 派生列 - 解析中断返回之间的文本

    我有一个来自 SQL Server 源的文本字段 它是一个电话号码字段 通常具有以下格式 Home 555 555 1212 Work 555 555 1212 Cell 555 555 1212 Emergency 555 555 121
  • 二进制零和 ASCII 字符零之间的区别

    gcc GCC 4 8 1 c89 Hello 我正在读一本关于指针的书 并使用此代码作为示例 memset buffer 0 sizeof buffer 将填充二进制零而不是字符零来填充缓冲区 我只是想知道二进制和字符零有什么区别 我以为
  • 如何创建 stackoverflow 类型的按钮?

    我想知道如何创建堆栈溢出类型按钮 如下图所示的按钮 是否可以使用 ExtJS 创建这样的按钮 不久前有人对此进行了扩展 它不是exactly像 SO 按钮一样 但是您可以稍微使用一下 CSS 并可能添加一些覆盖以使其达到 100 我认为第四
  • 将 Silverlight 3 转换为 4 时出现问题

    我目前正在尝试将 Silverlight 3 应用程序转换为 Silverlight 4 但遇到了问题 一切都编译正确 但当我运行它时 我在大约 70 加载时出现错误 我很困惑 因为我很确定这是一个 javascript 错误 抛出新的错误
  • 为什么 Valgrind 指出我的 std::map 实现会产生内存泄漏?

    Valgrind 输出以下内容 14446 2 976 176 direct 2 800 indirect bytes in 2 blocks are definitely lost in loss record 23 of 33 1444
  • boost::带有 bool 和 string 的变体

    我遇到麻烦了boost variant 使用升压1 67 0 当我的模板参数列表包含两者时bool and std string 任何应被视为字符串的变体对象似乎都隐式绑定到 bool 例如 using Varval boost varia
  • 根据 .net 后端服务器验证 Google ID

    我正在尝试为我的应用程序实现谷歌登录 后端服务器将是c net 有人可以给我指明方向 或者解释如何在 Net 中进行后端验证吗 他们提供了 java 示例并建议使用 googles api https developers google c
  • 使用 proguard 混淆 JAR 时的奇怪行为

    我正在尝试使用 Proguard 来混淆 Android JAR 4 7 但 4 6 也有问题 我可以将问题分解为一个简单的示例项目 问题 对于some函数 不清楚出于什么原因 公开函数的参数名称丢失 有时 混乱 真的 我想首先关注 丢失
  • 实体框架取消长时间运行的查询

    我是 TPL 的新手 我正在使用 TPL 对数据库进行一些异步调用 下面多次调用 GetDocumentAsync 方法 并做好将任务卸载到不同线程上的工作 以保持 UI 线程的响应能力 这里有两个目标 1 保持 UI 线程响应能力 2 让
  • Android Pie 渲染进程崩溃webview(9)

    尝试从资产文件夹加载 HTML 文件 应用程序在 Android v8 1 之前运行良好 但在 Android Pie 9 设备中崩溃 根据调试日志 WebView 渲染进程似乎崩溃了 正在寻找解决此问题的方法 请帮助和建议 提前致谢 从日
  • 如何在 Perl 中解析 strftime 格式的字符串?

    我是 Perl 新手 我想知道是否有 strftime 的反函数 看 use POSIX qw strftime print strftime YT mT d TTTT H M S localtime 我得到 2009T08T14 TTTT
  • Entity Framework Core 1.0 CurrentValues.SetValues() 不存在

    我正在尝试使用 Entity Framework Core 1 0 RC 1 更新实体及其相关子实体 其中实体与 DbContext 分离 我之前已经使用类似于此中描述的解决方案完成了此操作answer 但是 我们似乎不再能够使用 Enti
  • 不使用 64 位 int 将两个 32 位数字相乘

    我们正在使用以下算法进行一些 32 位 32 位乘法 让我们想要将 a 32 位 与 b 32 位 相乘 两者都有符号 a ah 2 16 al ah 高 16 位 al 低 16 位 b bh 2 16 bl bh 高 16 位 bl 低
  • delphi服务应用程序在15秒后停止,计时器不执行

    我想在 Delphi 中制作服务应用程序 每天下午 02 00 运行并复制一些文件 所以我用了定时器 但控制不会发生计时器事件并且服务会在 15 秒内终止 我写了一个关于定时器事件的代码 如何在服务中使用计时器 请帮忙 提前致谢 我的代码在