Standardisiert .NET Standard HResult-Werte für jede Plattform, die es unterstützt?

8

Ich erstelle eine einfache Funktion, die eine zufällige Datei erstellt. Um Thread-sicher zu sein, erstellt es die Datei in einer Wiederholungsschleife und wenn die Datei existiert, versucht es erneut.

%Vor%

Laut MSDN wird der HResult-Wert von COM abgeleitet, was darauf hindeutet, dass er nur unter Windows funktioniert und listet sie speziell als" Win32-Codes "auf . Aber das ist in einer Bibliothek, die auf .NET Standard abzielt und idealerweise sollte sie auf jeder Plattform .NET Standard funktionieren unterstützt .

Ich frage mich, ob ich mich auf den obigen Ansatz verlassen kann, der den Wert von HResult plattformübergreifend verwendet? Die Dokumentation ist in diesem Punkt nicht eindeutig.

Wenn nicht, wie ermittle ich, welche HResult-Werte auf anderen Plattformen zu erwarten sind?

  

HINWEIS: Es gibt eine ähnliche Frage Tut .NET Definieren Sie häufig HRESULT-Werte? , aber es wurde gefragt, bevor .NET Standard (und plattformübergreifende Unterstützung für .NET) existierte, also kann ich mich nicht auf diese Antwort für diesen Zweck verlassen.

Im Moment verwendet unsere Codebasis nur:

  1. 0x00000020 - ERROR_SHARING_VIOLATION
  2. 0x00000021 - ERROR_LOCK_VIOLATION
  3. 0x00000050 - ERROR_FILE_EXISTS

Wir zielen auf .NET Standard 1.5 ab.

  

HINWEIS: Während die angenommene Antwort das erfüllt, was ich hier gefragt habe, habe ich eine weitere Frage Wie geht es? Ich erstelle generische IOExceptions, die plattformübergreifend zuverlässig portierbar sind?

    
NightOwl888 23.09.2017, 14:10
quelle

1 Antwort

7

Exception.HResult Werte sind nicht plattformübergreifend standardisiert.

Bei E / A-Fehlern gibt .NET Core den plattformspezifischen Fehlercode als HResult zurück. Der Wert der HResult-Eigenschaft für die Datei ist in Ihrem Beispiel bereits vorhanden und wird unter Linux auf 17 gesetzt. Für andere Unix-Systeme kann dieser Wert anders sein.

Der entsprechende Code, der IO-Fehler auf Ausnahmen unter Unix abbildet, finden Sie hier: Ссылка

    
Jan Kotas 23.09.2017, 16:22
quelle

Tags und Links