Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / ComIntegration / ComPlusSynchronizationContext.cs / 1 / ComPlusSynchronizationContext.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.ComIntegration { using System; using System.Runtime.InteropServices; using System.Threading; using System.Diagnostics; using System.ServiceModel.Diagnostics; class ComPlusSynchronizationContext : SynchronizationContext { IServiceActivity activity; bool postSynchronous; public ComPlusSynchronizationContext(IServiceActivity activity, bool postSynchronous) { this.activity = activity; this.postSynchronous = postSynchronous; } public override void Send(SendOrPostCallback d, Object state) { DiagnosticUtility.DebugAssert("Send should never be called"); } public override void Post(SendOrPostCallback d, Object state) { ComPlusActivityTrace.Trace(TraceEventType.Verbose, TraceCode.ComIntegrationEnteringActivity, SR.TraceCodeComIntegrationEnteringActivity); ServiceCall call = new ServiceCall(d, state); if (this.postSynchronous) { this.activity.SynchronousCall(call); } else { this.activity.AsynchronousCall(call); } ComPlusActivityTrace.Trace(TraceEventType.Verbose, TraceCode.ComIntegrationLeftActivity, SR.TraceCodeComIntegrationLeftActivity); } public void Dispose() { while (Marshal.ReleaseComObject(this.activity) > 0) ; } class ServiceCall : IServiceCall { SendOrPostCallback callback; Object state; public ServiceCall(SendOrPostCallback callback, Object state) { this.callback = callback; this.state = state; } public void OnCall() { ServiceModelActivity activity = null; try { Guid guidLogicalThreadID = Guid.Empty; if (DiagnosticUtility.ShouldUseActivity) { IComThreadingInfo comThreadingInfo; comThreadingInfo = (IComThreadingInfo)SafeNativeMethods.CoGetObjectContext(ComPlusActivityTrace.IID_IComThreadingInfo); if (comThreadingInfo != null) { comThreadingInfo.GetCurrentLogicalThreadId(out guidLogicalThreadID); activity = ServiceModelActivity.CreateBoundedActivity(guidLogicalThreadID); } ServiceModelActivity.Start(activity, SR.GetString(SR.TransferringToComplus, guidLogicalThreadID.ToString()), ActivityType.TransferToComPlus); } ComPlusActivityTrace.Trace(TraceEventType.Verbose, TraceCode.ComIntegrationExecutingCall, SR.TraceCodeComIntegrationExecutingCall); this.callback(this.state); } catch (Exception e) { if (DiagnosticUtility.IsFatal(e)) throw; DiagnosticUtility.InvokeFinalHandler(e); } finally { if (activity != null) { activity.Dispose(); activity = null; } } } } } } // 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
- BulletDecorator.cs
- WebBaseEventKeyComparer.cs
- ShortcutKeysEditor.cs
- MasterPage.cs
- xdrvalidator.cs
- ProcessExitedException.cs
- ValidationHelpers.cs
- ellipse.cs
- PaginationProgressEventArgs.cs
- ConsumerConnectionPointCollection.cs
- Memoizer.cs
- DataGridTextBox.cs
- ModelItemCollectionImpl.cs
- XmlSchemaException.cs
- OracleConnectionFactory.cs
- InlineUIContainer.cs
- ToolStripItemCollection.cs
- ArgumentFixer.cs
- SpecialNameAttribute.cs
- SettingsPropertyNotFoundException.cs
- RowUpdatedEventArgs.cs
- HwndSource.cs
- PointLightBase.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- WebPartTransformer.cs
- ListViewItemMouseHoverEvent.cs
- TableItemStyle.cs
- IntAverageAggregationOperator.cs
- XmlEntityReference.cs
- SoapReflectionImporter.cs
- Queue.cs
- DataGridTable.cs
- CoTaskMemHandle.cs
- DecimalStorage.cs
- wgx_render.cs
- DataObjectPastingEventArgs.cs
- RemotingConfigParser.cs
- ObjectListFieldCollection.cs
- PolyBezierSegmentFigureLogic.cs
- XmlDataSource.cs
- DataServiceRequestException.cs
- DoubleLinkList.cs
- TextFormatterHost.cs
- SiteMap.cs
- IIS7UserPrincipal.cs
- ScriptingAuthenticationServiceSection.cs
- RelatedImageListAttribute.cs
- IdleTimeoutMonitor.cs
- _TLSstream.cs
- AutomationProperty.cs
- PersonalizationDictionary.cs
- XmlWrappingReader.cs
- OdbcConnection.cs
- ResourceCategoryAttribute.cs
- WmpBitmapDecoder.cs
- BaseAddressElement.cs
- ResourcesChangeInfo.cs
- MessageQueueException.cs
- DataBindingHandlerAttribute.cs
- FtpWebResponse.cs
- TextDecoration.cs
- NamespaceCollection.cs
- SystemResourceKey.cs
- VerificationAttribute.cs
- HtmlControl.cs
- GraphicsState.cs
- DataTemplate.cs
- ConfigurationElementCollection.cs
- SpellerHighlightLayer.cs
- ValueTable.cs
- RecognizeCompletedEventArgs.cs
- IApplicationTrustManager.cs
- SamlAuthenticationClaimResource.cs
- OpacityConverter.cs
- CngUIPolicy.cs
- WebOperationContext.cs
- FlowLayout.cs
- ProgressBarAutomationPeer.cs
- DataRecordObjectView.cs
- assertwrapper.cs
- EntityCommandCompilationException.cs
- OpCodes.cs
- OleCmdHelper.cs
- EnumerableValidator.cs
- CurrencyWrapper.cs
- DataControlFieldHeaderCell.cs
- ScrollProviderWrapper.cs
- ConfigurationPermission.cs
- GeometryCollection.cs
- DirectionalLight.cs
- DataGridViewRowPostPaintEventArgs.cs
- SHA512.cs
- SqlProcedureAttribute.cs
- PhonemeConverter.cs
- HwndSourceKeyboardInputSite.cs
- BrowserCapabilitiesFactoryBase.cs
- MultiTrigger.cs
- PeerNameResolver.cs
- WebPartPersonalization.cs
- CodeExporter.cs