diff options
Diffstat (limited to 'src/mscorlib/src/System/Runtime/Reliability/CriticalFinalizerObject.cs')
-rw-r--r-- | src/mscorlib/src/System/Runtime/Reliability/CriticalFinalizerObject.cs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/mscorlib/src/System/Runtime/Reliability/CriticalFinalizerObject.cs b/src/mscorlib/src/System/Runtime/Reliability/CriticalFinalizerObject.cs new file mode 100644 index 0000000000..2524aaaecb --- /dev/null +++ b/src/mscorlib/src/System/Runtime/Reliability/CriticalFinalizerObject.cs @@ -0,0 +1,44 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +// +/*============================================================ +** +** +** +** Deriving from this class will cause any finalizer you define to be critical +** (i.e. the finalizer is guaranteed to run, won't be aborted by the host and is +** run after the finalizers of other objects collected at the same time). +** +** You must possess UnmanagedCode permission in order to derive from this class. +** +** +===========================================================*/ + +using System; +using System.Security.Permissions; +using System.Runtime.InteropServices; + +namespace System.Runtime.ConstrainedExecution +{ +#if !FEATURE_CORECLR + [SecurityPermission(SecurityAction.InheritanceDemand, UnmanagedCode=true)] +#endif + [System.Runtime.InteropServices.ComVisible(true)] + public abstract class CriticalFinalizerObject + { + #if FEATURE_CORECLR + [System.Security.SecuritySafeCritical] // auto-generated + #endif + [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] + protected CriticalFinalizerObject() + { + } + + [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] + ~CriticalFinalizerObject() + { + } + } +} |