1.FileClient.SameFile
调用这个方法,当本地文件不存在时,会一直等待。跟踪代码,发现:
function TkbmMWCustomFileClient.SameFileEx(LocalPath:string; RemotePath:string; const Args:array of Variant{$IFDEF KBMMW_LICENSE_MESSAGING}; const AOptions:TkbmMWMessageOptions = []; const APostSubject:string = ''{$ENDIF}):boolean; ... ev:=Scheduler.Run(procedure(const AEvent:IkbmMWScheduledEvent) begin AEvent.Data:=null; AEvent.Data:=LocalChecksum(LocalPath);//这里产生异常,则下面的ev.WaitRun不退出,一直等待 end) .Precise.Activate; try sRemote:=ChecksumEx(RemotePath,Args{$IFDEF KBMMW_LICENSE_MESSAGING},AOptions,APostSubject{$ENDIF}); finally // Await local checksum done before continuing. ev.WaitRun; end; ...
反馈给作者,等修正。如果文件存在,这个方法执行正常。
kbmMW 5.10.20没有解决!用下面代码能更好的说明问题,已经发给作者。
procedure Tmainform.Button6Click(Sender: TObject); var ev:IkbmMWScheduledEvent; begin ev:=Scheduler.Run(procedure(const AEvent:IkbmMWScheduledEvent) begin raise Exception.Create('Error Message'); end) .WhenException(procedure (const AEvent:IkbmMWScheduledEvent; const AException:Exception) begin // end) .Precise.Activate; try // finally ev.WaitRun; // Wait forever end; ShowMessage('Scheduled Event is finish!'); //Can't execute here end;
我们手工在线程任务中产生一个异常,这将导致ev.WaitRun一直运行,就卡死到这里,再进一步跟踪,卡死到ev.WaitRuns的循环中了。
2.SmartBinding for ListView
测试发现,当绑定数据集与ListView时,增加、删除记录,ListView不会同步显示。如果编辑一条记录,则能够自动同步显示。
也反馈给作者,不知结何如何?
kbmMW 5.10.20支持了!