SafeHandle.IsInvalid プロパティ


派生クラスでオーバーライドされると、ハンドル値が無効かどうかを示す値を取得します。When overridden in a derived class, gets a value indicating whether the handle value is invalid.

 abstract property bool IsInvalid { bool get(); };
public abstract bool IsInvalid { get; }
member this.IsInvalid : bool
Public MustOverride ReadOnly Property IsInvalid As Boolean


ハンドル値が無効な場合は true。それ以外の場合は falsetrue if the handle value is invalid; otherwise, false.

次の例では、ファイルが正常に開かれたかどうかを確認します。The following example checks if a file was opened successfully. このコード例は、SafeHandle クラス用に用意されている大規模な例の一部です。This code example is part of a larger example provided for the SafeHandle class.

// Determine if file is opened successfully.
if (_handle.IsInvalid)
    throw new Win32Exception(Marshal.GetLastWin32Error(), fileName);


派生クラスは、IsInvalid プロパティを実装する必要があります。これにより、重要な終了処理が必要かどうかを共通言語ランタイムが判断できるようになります。Derived classes must implement the IsInvalid property so that the common language runtime can determine whether critical finalization is required. 派生クラスは、サポートするハンドルの一般的な種類に適した実装を提供する必要があります (0 または-1 は無効です)。Derived classes must provide an implementation that suits the general type of handle they support (0 or -1 is invalid). これらのクラスは、特定のセーフハンドル型に対してさらに派生させることができます。These classes can then be further derived for specific safe handle types.

SafeHandle オブジェクトが基になるハンドルの使用を終了したかどうかを報告する IsClosed プロパティとは異なり、IsInvalid プロパティは、指定されたハンドル値が常に無効と見なされるかどうかを計算します。Unlike the IsClosed property, which reports whether the SafeHandle object has finished using the underlying handle, the IsInvalid property calculates whether the given handle value is always considered invalid. したがって、IsInvalid プロパティは常に、1つのハンドル値に対して同じ値を返します。Therefore, the IsInvalid property always returns the same value for any one handle value.


アンマネージコードを呼び出すためのアクセス許可。for permission to call unmanaged code. セキュリティアクション: LinkDemandSecurity action: LinkDemand. 関連付けられた列挙型: UnmanagedCodeAssociated enumeration: UnmanagedCode