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

05-11 22:17