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支持了!