Heim > Backend-Entwicklung > C++ > Wie kann ich Dateisperrungen effizient erkennen, ohne Try-Catch-Blöcke zu verwenden?

Wie kann ich Dateisperrungen effizient erkennen, ohne Try-Catch-Blöcke zu verwenden?

Barbara Streisand
Freigeben: 2025-01-27 08:36:11
Original
926 Leute haben es durchsucht

How Can I Efficiently Detect File Locks Without Using Try-Catch Blocks?

Dateisperren effizient erkennen und die Verwendung von Try/Catch-Blöcken vermeiden

Bei der Programmierung ist es ein häufiges Problem, festzustellen, ob eine Datei gesperrt ist, ohne sich auf Try-Catch-Blöcke zu verlassen. Eine zuverlässige Lösung besteht darin, eine benutzerdefinierte Klasse FileManager zu verwenden, um Dateizugriffsvorgänge zu kapseln:

Benutzerdefinierte Dateimanagerklasse:

<code class="language-c#">public class FileManager
{
    ...
    private FileStream GetStream(FileAccess fileAccess)
    {
        int tries = 0;
        while (true)
        {
            try
            {
                return File.Open(_fileName, FileMode.Open, fileAccess, FileShare.None); //尝试打开文件
            }
            catch (IOException e)
            {
                if (!IsFileLocked(e)) // 检查文件是否被锁定
                    throw;
                if (++tries > _numberOfTries) //如果达到最大尝试次数
                    throw new MyCustomException("文件锁定时间过长: " + e.Message, e);
                Thread.Sleep(_timeIntervalBetweenTries); //等待后再重试
            }
        }
    }

    ...
}</code>
Nach dem Login kopieren

Erkennung von Dateisperren:

<code class="language-c#">private static bool IsFileLocked(IOException exception)
{
    int errorCode = Marshal.GetHRForException(exception) & 0xFFFF; // 获取错误代码
    return errorCode == 32; // 检查错误代码是否为32 (共享冲突)
}</code>
Nach dem Login kopieren

Mit dieser Methode können Sie den Dateizugriff in bestimmten Intervallen wiederholt versuchen, bis die Datei erfolgreich geöffnet wurde oder die vorgegebene Anzahl von Wiederholungsversuchen überschritten wird. Durch die Bereitstellung einer feinkörnigen Methode zur Erkennung von Dateisperren können Sie den Mehraufwand von Try-Catch-Blöcken vermeiden und gleichzeitig die Dateizugriffsvorgänge robust und kontrollierbar halten.

Das obige ist der detaillierte Inhalt vonWie kann ich Dateisperrungen effizient erkennen, ohne Try-Catch-Blöcke zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage