我想知道的是:假设问题不是由Anti-Virus(或类似的)引起的,是否是因为操作系统在下次尝试写入文件之前没有清除标志(或类似的东西)? 不,这不是速度问题,也不是缓存问题。这是共享冲突,这意味着必须有另一个打开的句柄指向同一个文件,其中该句柄分配(或缺少)的共享权限与此代码请求的权限不兼容。 例如,如果另一个句柄没有共享读写访问权限,那么在创建带有fmOpenReadWrite的TFileStream时,此代码将无法打开该文件。如果打开了文件的任何句柄,那么在创建带有fmCreate的TFileStream时,此代码将失败,因为默认情况下,它请求对文件的独占访问。 我建议你做些类似的事情: procedure TLog.WriteToLog(Entry: AnsiString);var strFile: string; fStream: TFileStream; strDT: AnsiString; fMode: Word;begin if (strLogDirectory <> '') and (strFileRoot <> '') then begin ForceDirectories(strLogDirectory); strFile := IncludeTrailingPathDelimiter(strLogDirectory) + strFi