InternalLocalChecksum,这个函数返回大于64位的结果,前64位是正常的:
function TkbmMWCustomFileClient.InternalLocalChecksum(Path:string):string; begin ... Result:=kbmMWDigestToString(digest); Result:=Result.Substring(0,64); //前64位是正常的结果 ... end;
InternalSameFileEx卡死应用,注释掉用线程用法,结果正常了,那问题就出在ev.WaitRun这一行上:
function TkbmMWCustomFileClient.InternalSameFileEx(LocalPath:string; RemotePath:string; const Args:array of Variant{$IFDEF KBMMW_LICENSE_MESSAGING}; const AOptions:TkbmMWMessageOptions = []; const APostSubject:string = ''{$ENDIF}):boolean; var sLocal,sRemote:string; {$IFDEF KBMMW_LICENSE_SCHEDULER} ev:IkbmMWScheduledEvent; {$ENDIF} begin //{$IFDEF KBMMW_LICENSE_SCHEDULER} // ev:=Scheduler.Run(procedure(const AEvent:IkbmMWScheduledEvent) // begin // AEvent.Data:=null; // AEvent.Data:=InternalLocalChecksum(LocalPath); // end) // .Precise.Activate; // try // sRemote:=InternalChecksumEx(RemotePath,Args{$IFDEF KBMMW_LICENSE_MESSAGING},AOptions,APostSubject{$ENDIF}); // finally // // Await local checksum done before continuing. // ev.WaitRun; // end; // sLocal:=ev.Data; // Result:=sLocal=sRemote; //{$ELSE} sLocal:=InternalLocalChecksum(LocalPath); sRemote:=InternalChecksumEx(RemotePath,Args{$IFDEF KBMMW_LICENSE_MESSAGING},AOptions,APostSubject{$ENDIF}); Result:=sLocal=sRemote; //{$ENDIF} end;
标签:sLocal,string,LICENSE,kbmMW,sRemote,ENDIF,ev,bug,android64 From: https://www.cnblogs.com/kinglandsoft/p/18561051