Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / Util / SafeBitVector32.cs / 1 / SafeBitVector32.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.Threading; namespace System.Web.Util { // // This is a multithreadsafe version of System.Collections.Specialized.BitVector32. // [Serializable] internal struct SafeBitVector32 { private volatile int _data; internal SafeBitVector32(int data) { this._data = data; } #if UNUSED_CODE internal int IntegerValue { get { return _data; } set { #pragma warning disable 0420 Interlocked.Exchange(ref _data, value); #pragma warning restore 0420 } } #endif internal bool this[int bit] { get { int data = _data; return (data & bit) == bit; } set { for (;;) { int oldData = _data; int newData; if (value) { newData = oldData | bit; } else { newData = oldData & ~bit; } #pragma warning disable 0420 int result = Interlocked.CompareExchange(ref _data, newData, oldData); #pragma warning restore 0420 if (result == oldData) { break; } } } } internal bool ChangeValue(int bit, bool value) { for (;;) { int oldData = _data; int newData; if (value) { newData = oldData | bit; } else { newData = oldData & ~bit; } if (oldData == newData) { return false; } #pragma warning disable 0420 int result = Interlocked.CompareExchange(ref _data, newData, oldData); #pragma warning restore 0420 if (result == oldData) { return true; } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.Threading; namespace System.Web.Util { // // This is a multithreadsafe version of System.Collections.Specialized.BitVector32. // [Serializable] internal struct SafeBitVector32 { private volatile int _data; internal SafeBitVector32(int data) { this._data = data; } #if UNUSED_CODE internal int IntegerValue { get { return _data; } set { #pragma warning disable 0420 Interlocked.Exchange(ref _data, value); #pragma warning restore 0420 } } #endif internal bool this[int bit] { get { int data = _data; return (data & bit) == bit; } set { for (;;) { int oldData = _data; int newData; if (value) { newData = oldData | bit; } else { newData = oldData & ~bit; } #pragma warning disable 0420 int result = Interlocked.CompareExchange(ref _data, newData, oldData); #pragma warning restore 0420 if (result == oldData) { break; } } } } internal bool ChangeValue(int bit, bool value) { for (;;) { int oldData = _data; int newData; if (value) { newData = oldData | bit; } else { newData = oldData & ~bit; } if (oldData == newData) { return false; } #pragma warning disable 0420 int result = Interlocked.CompareExchange(ref _data, newData, oldData); #pragma warning restore 0420 if (result == oldData) { return true; } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- VisualStateManager.cs
- DataListItemCollection.cs
- SafeSecurityHandles.cs
- InitiatorSessionSymmetricTransportSecurityProtocol.cs
- BitmapEffectInput.cs
- BulletDecorator.cs
- EventMappingSettings.cs
- PenThread.cs
- XmlStreamStore.cs
- DataGridViewRow.cs
- GridViewCancelEditEventArgs.cs
- MsmqHostedTransportManager.cs
- ContextMarshalException.cs
- CollectionEditVerbManager.cs
- SiteMapSection.cs
- BindingSourceDesigner.cs
- PageParserFilter.cs
- SimpleTypeResolver.cs
- WebPartVerbsEventArgs.cs
- FontWeight.cs
- Matrix3DConverter.cs
- SetIterators.cs
- Deflater.cs
- sortedlist.cs
- BamlWriter.cs
- XmlFormatReaderGenerator.cs
- Attributes.cs
- ObjectConverter.cs
- WindowsAuthenticationModule.cs
- WebResourceUtil.cs
- _SslState.cs
- Command.cs
- SoapIncludeAttribute.cs
- RepeatBehaviorConverter.cs
- TextServicesHost.cs
- CollectionExtensions.cs
- PrimaryKeyTypeConverter.cs
- ProxyDataContractResolver.cs
- StatusBarItem.cs
- ExpressionEditorAttribute.cs
- EntityDesignerDataSourceView.cs
- OleDbFactory.cs
- OrderedDictionary.cs
- DataBoundControl.cs
- ValueProviderWrapper.cs
- TraceXPathNavigator.cs
- TraceUtils.cs
- HttpCachePolicy.cs
- SortDescription.cs
- BinaryFormatter.cs
- GetPageNumberCompletedEventArgs.cs
- login.cs
- Geometry.cs
- KerberosSecurityTokenProvider.cs
- SqlNotificationRequest.cs
- AsymmetricSignatureFormatter.cs
- PropertyPanel.cs
- MutexSecurity.cs
- WebEventTraceProvider.cs
- TemplatePartAttribute.cs
- CroppedBitmap.cs
- UnsafeNativeMethods.cs
- OracleDataReader.cs
- DataGridViewTextBoxColumn.cs
- PasswordValidationException.cs
- TypeAccessException.cs
- CompiledWorkflowDefinitionContext.cs
- Win32Exception.cs
- HttpApplication.cs
- PointCollectionConverter.cs
- StateItem.cs
- CodeTypeParameterCollection.cs
- DispatcherEventArgs.cs
- QueryOpeningEnumerator.cs
- Attributes.cs
- TrackingServices.cs
- SpellerError.cs
- LinkLabel.cs
- ItemsChangedEventArgs.cs
- CssTextWriter.cs
- DataGridPageChangedEventArgs.cs
- ClientScriptManagerWrapper.cs
- EntityContainer.cs
- TypeElement.cs
- ErrorTolerantObjectWriter.cs
- ProxyWebPart.cs
- WebConfigurationHostFileChange.cs
- CodeDelegateCreateExpression.cs
- ProfileGroupSettings.cs
- ApplicationHost.cs
- SimpleApplicationHost.cs
- ListViewEditEventArgs.cs
- DataRowChangeEvent.cs
- ReflectionTypeLoadException.cs
- CodeValidator.cs
- KeyNotFoundException.cs
- StoryFragments.cs
- EventToken.cs
- RemoteWebConfigurationHost.cs
- LinqExpressionNormalizer.cs