kbmmw scheduler实战

设置全局对象
var
  kbmMWScheduler : TkbmMWScheduledEvents;

procedure TForm_main.Button16Click(Sender: TObject);
var
   DeleteWuXiaoToken : IkbmMWScheduledEvent ;
begin
   DeleteWuXiaoToken  := kbmMWScheduler.GetByName('DeleteWuXiaoToken');
   DeleteWuXiaoToken.Active := False;
end;

//// 以上代码执行报错

---- 方法一
use   kbmMWScheduler ,Uni,kbmMWUniDAC 


  private
    { Private declarations }
    myeventDeleteWuXiaoToken :  IkbmMWScheduledEvent;
 public
    { Public declarations }
    function  OnScheduledEventDeleteWuXiaoToken(const AScheduledEvent: IkbmMWScheduledEvent): boolean;
  end;


function TForm_main.OnScheduledEventDeleteWuXiaoToken(
  const AScheduledEvent: IkbmMWScheduledEvent): boolean;
var
  tempstr: string;
  UniQuery1: TUniQuery;
  aconn_uni: TkbmMWUNIDACConnection;
  count : String;
begin
  try
    try
      tempstr := DM.lockDbConnetionAndUniQuery(aconn_uni, UniQuery1,DM.kbmMWUNIDACConnectionPool1); // 从数据库连接池中取出可用链接和uni数据集
      if tempstr <> '' then // 如果出现错误,返回错误字符串并退出函数
      begin
        exit;
      end;
      // aconn_uni.StartTransaction; // 开始事务
      UniQuery1.Close;
      UniQuery1.sql.Clear;
      UniQuery1.sql.Add('DELETE FROM UserToken where CreatedTime<dateadd(minute,-30,GETDATE())');
      UniQuery1.Prepare;
      UniQuery1.ExecSQL;
      count := UniQuery1.RowsAffected.ToString;
      LogWriter.Write(ltWarning,'删除无效token-->'+ count);
      // aconn_uni.CommitTransaction; // 结束事务
    except
      on e: Exception do
      begin
         LogWriter.Write(ltError,e.Message);
        // aconn_uni.RollbackTransaction; // 回滚事务
      end;
    end;
  finally
    DM.unlockDbConnetionAndUniQuery(aconn_uni, UniQuery1); // 释放aconn_uni和uniQuery1
  end;
end;

procedure TForm_main.Button15Click(Sender: TObject);//启动定时删除无效token
begin
   //松散调度Relaxed ,每200毫秒执行一次  ,   松散调度stop 后,重启无效
    {建立精确事件调度在kbmmw 里面也很简单,代码如下,
    kbmMWScheduler.Schedule(OnScheduledEvent).NamedAs(‘xalion’).EverySecond(10).Precise.Activate(true);}
  myeventDeleteWuXiaoToken :=
    Scheduler.Schedule(OnScheduledEventDeleteWuXiaoToken).EverySecond(3).Precise.Activate(true);
  if not myeventDeleteWuXiaoToken.Scheduler.Active
      then myeventDeleteWuXiaoToken.Scheduler.Events.Start ;
end;

procedure TForm_main.Button16Click(Sender: TObject);
begin
   myeventDeleteWuXiaoToken.Active := false;
   //myeventDeleteWuXiaoToken.Scheduler.Events.Stop ;  //不是单事件 是全部事件 全部停止
end;

方法二 通过命名方法:
        use  kbmMWScheduler ;
procedure TForm_main.Button15Click(Sender: TObject);//启动定时删除无效token
begin
 Scheduler.Schedule(OnScheduledEventDeleteWuXiaoToken).NamedAs('DeleteWuXiaoToken').EverySecond(3).Precise.Activate(true);
//也可以这样用  松散调度Relaxed ,精确调度Precise
{  Scheduler.Schedule(DataModule3.OnScheduledEvent).NamedAs('pushmessage').EverySecond(3).Precise.Active := True;}

end;

procedure TForm_main.Button16Click(Sender: TObject);
begin
   Scheduler.Events.GetByName('DeleteWuXiaoToken').Active := False;
end;

扫描二维码关注公众号,回复: 9970642 查看本文章

=======================================================================

先要命名,按名字重启

---- 修改界面

意识是这里如果要修改界面 需要这样调用? 对
 

发布了366 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_18932003/article/details/104920276