Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Dispatcher / SingletonInstanceContextProvider.cs / 1 / SingletonInstanceContextProvider.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System; using System.ServiceModel; using System.ServiceModel.Channels; internal class SingletonInstanceContextProvider : InstanceContextProviderBase { InstanceContext singleton; object thisLock; internal SingletonInstanceContextProvider(DispatchRuntime dispatchRuntime) : base(dispatchRuntime) { this.thisLock = new Object(); } internal InstanceContext SingletonInstance { get { if (this.singleton == null) { lock (this.thisLock) { if (this.singleton == null) { InstanceContext instanceContext = this.DispatchRuntime.SingletonInstanceContext; if (instanceContext == null) { instanceContext = new InstanceContext(this.DispatchRuntime.ChannelDispatcher.Host, false); } if (instanceContext.State == CommunicationState.Created) { instanceContext.Open(); } //Set the IsUsercreated flag to false for singleton mode even in cases when users create their own runtime. instanceContext.IsUserCreated = false; //Delay assigning the potentially newly created InstanceContext (till after its opened) to this.Singleton //to ensure that it is opened only once. this.singleton = instanceContext; } } } return this.singleton; } } #region IInstanceContextProvider Members public override InstanceContext GetExistingInstanceContext(Message message, IContextChannel channel) { ServiceChannel serviceChannel = this.GetServiceChannelFromProxy(channel); if (serviceChannel != null && serviceChannel.HasSession) { this.SingletonInstance.BindIncomingChannel(serviceChannel); } return this.SingletonInstance; } public override void InitializeInstanceContext(InstanceContext instanceContext, Message message, IContextChannel channel) { //no-op } public override bool IsIdle(InstanceContext instanceContext) { //By default return false return false; } public override void NotifyIdle(InstanceContextIdleCallback callback, InstanceContext instanceContext) { //no-op } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InputGestureCollection.cs
- DataGridViewCellParsingEventArgs.cs
- MapPathBasedVirtualPathProvider.cs
- RegexCaptureCollection.cs
- DispatcherHooks.cs
- AmbientValueAttribute.cs
- DefaultValueAttribute.cs
- SettingsProviderCollection.cs
- ParameterBuilder.cs
- TranslateTransform3D.cs
- PartitionerQueryOperator.cs
- RecipientInfo.cs
- ProfessionalColors.cs
- SemanticResultValue.cs
- DecimalAnimationUsingKeyFrames.cs
- DesignerActionList.cs
- Listen.cs
- METAHEADER.cs
- StickyNote.cs
- Stackframe.cs
- Geometry3D.cs
- JsonReaderDelegator.cs
- COM2TypeInfoProcessor.cs
- JsonReader.cs
- RoutedEventHandlerInfo.cs
- MonikerBuilder.cs
- ObjectItemCollection.cs
- StateItem.cs
- DataControlLinkButton.cs
- ProjectedSlot.cs
- figurelengthconverter.cs
- ADMembershipUser.cs
- SortedDictionary.cs
- SessionSwitchEventArgs.cs
- ArrayWithOffset.cs
- SequentialOutput.cs
- DataSourceIDConverter.cs
- FixedDocumentSequencePaginator.cs
- DataControlImageButton.cs
- bidPrivateBase.cs
- RegisteredHiddenField.cs
- GetPageCompletedEventArgs.cs
- QueryOpcode.cs
- VarInfo.cs
- StylusButtonEventArgs.cs
- ArraySubsetEnumerator.cs
- PersonalizableTypeEntry.cs
- metadatamappinghashervisitor.cs
- SecurityManager.cs
- Int64Converter.cs
- MapPathBasedVirtualPathProvider.cs
- SoapAttributeAttribute.cs
- safesecurityhelperavalon.cs
- BitSet.cs
- InplaceBitmapMetadataWriter.cs
- RangeContentEnumerator.cs
- BasicCellRelation.cs
- BufferModesCollection.cs
- TrackingProfileDeserializationException.cs
- BasicCellRelation.cs
- DummyDataSource.cs
- EventlogProvider.cs
- XsdDuration.cs
- TaskForm.cs
- KeyInterop.cs
- Parameter.cs
- LoginView.cs
- XmlNamespaceDeclarationsAttribute.cs
- ImageBrush.cs
- ItemsControl.cs
- StickyNoteHelper.cs
- Function.cs
- ContentHostHelper.cs
- SimplePropertyEntry.cs
- RsaSecurityTokenAuthenticator.cs
- MenuScrollingVisibilityConverter.cs
- MultipleViewPattern.cs
- Helper.cs
- WriterOutput.cs
- NominalTypeEliminator.cs
- MergeFailedEvent.cs
- XmlSchemaImporter.cs
- ErrorWrapper.cs
- MSAAEventDispatcher.cs
- FontEditor.cs
- DesignerVerbCollection.cs
- ACL.cs
- ReverseQueryOperator.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- CircleEase.cs
- StylusPoint.cs
- ListViewGroupConverter.cs
- CollectionContainer.cs
- NotifyCollectionChangedEventArgs.cs
- WeakReference.cs
- BaseComponentEditor.cs
- WebBrowserNavigatedEventHandler.cs
- XPathCompileException.cs
- Process.cs
- XPathException.cs