Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Base / System / Windows / Threading / DispatcherSynchronizationContext.cs / 1 / DispatcherSynchronizationContext.cs
using System; using System.Threading; using System.Diagnostics; using System.ComponentModel; using System.Security; // CAS using System.Security.Permissions; // Registry permissions namespace System.Windows.Threading { ////// SynchronizationContext subclass used by the Dispatcher. /// public sealed class DispatcherSynchronizationContext : SynchronizationContext { ////// Constructs a new instance of the DispatcherSynchroniazationContext /// using the current Dispatcher. /// public DispatcherSynchronizationContext() : this(Dispatcher.CurrentDispatcher) { } ////// Constructs a new instance of the DispatcherSynchroniazationContext /// using the specified Dispatcher. /// public DispatcherSynchronizationContext(Dispatcher dispatcher) { if(dispatcher == null) { throw new ArgumentNullException("dispatcher"); } _dispatcher = dispatcher; // Tell the CLR to call us when blocking. SetWaitNotificationRequired(); } ////// Synchronously invoke the callback in the SynchronizationContext. /// public override void Send(SendOrPostCallback d, Object state) { _dispatcher.Invoke(DispatcherPriority.Normal, d, state); } ////// Asynchronously invoke the callback in the SynchronizationContext. /// public override void Post(SendOrPostCallback d, Object state) { _dispatcher.BeginInvoke(DispatcherPriority.Normal, d, state); } ////// Wait for a set of handles. /// ////// Critical - Calls WaitForMultipleObjectsEx which has a SUC. /// [SecurityCritical] [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.ControlPolicy|SecurityPermissionFlag.ControlEvidence)] public override int Wait(IntPtr[] waitHandles, bool waitAll, int millisecondsTimeout) { if(_dispatcher._disableProcessingCount > 0) { // Call into native code directly in order to avoid the default // CLR locking behavior which pumps messages under contention. // Even though they try to pump only the COM messages, any // messages that have been SENT to the window are also // dispatched. This can lead to unpredictable reentrancy. return MS.Win32.UnsafeNativeMethods.WaitForMultipleObjectsEx(waitHandles.Length, waitHandles, waitAll, millisecondsTimeout, false); } else { return SynchronizationContext.WaitHelper(waitHandles, waitAll, millisecondsTimeout); } } ////// Create a copy of this SynchronizationContext. /// public override SynchronizationContext CreateCopy() { DispatcherSynchronizationContext context = new DispatcherSynchronizationContext(_dispatcher); return context; } internal Dispatcher _dispatcher; } } // 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
- StylusPointProperty.cs
- ProfileModule.cs
- HtmlTextArea.cs
- XmlSerializerNamespaces.cs
- DispatcherExceptionFilterEventArgs.cs
- Repeater.cs
- XmlSchemaResource.cs
- UpdateEventArgs.cs
- SqlClientMetaDataCollectionNames.cs
- FormsAuthenticationModule.cs
- InspectionWorker.cs
- BorderGapMaskConverter.cs
- SpellCheck.cs
- PeerNameResolver.cs
- UnicodeEncoding.cs
- FramingEncoders.cs
- PanelContainerDesigner.cs
- HitTestResult.cs
- DataBinding.cs
- ThreadExceptionEvent.cs
- TextInfo.cs
- XPathItem.cs
- Part.cs
- Automation.cs
- ConsumerConnectionPointCollection.cs
- HttpConfigurationSystem.cs
- DataBindingValueUIHandler.cs
- _ConnectionGroup.cs
- TextParagraphProperties.cs
- SqlExpander.cs
- FileDialogCustomPlacesCollection.cs
- SpecularMaterial.cs
- ScriptControl.cs
- login.cs
- HtmlWindow.cs
- PrintPreviewGraphics.cs
- QilName.cs
- BasePropertyDescriptor.cs
- HtmlTableCellCollection.cs
- RemoteEndpointMessageProperty.cs
- FontUnit.cs
- sqlstateclientmanager.cs
- WizardSideBarListControlItemEventArgs.cs
- BitmapPalettes.cs
- BitmapCodecInfoInternal.cs
- MarkupObject.cs
- Style.cs
- FormsAuthenticationTicket.cs
- AttachInfo.cs
- VisualStateChangedEventArgs.cs
- MyContact.cs
- ChannelCacheSettings.cs
- ShimAsPublicXamlType.cs
- DispatcherFrame.cs
- AsyncStreamReader.cs
- ControlTemplate.cs
- ExpressionEditorAttribute.cs
- SHA256Managed.cs
- QueryCursorEventArgs.cs
- CharacterString.cs
- SiteMapNode.cs
- Soap12ProtocolImporter.cs
- HtmlInputControl.cs
- DataGridViewCellStyleChangedEventArgs.cs
- Attributes.cs
- EntityDataSourceWizardForm.cs
- TimeoutConverter.cs
- PathGeometry.cs
- GridViewRowEventArgs.cs
- GridViewSelectEventArgs.cs
- DictionaryTraceRecord.cs
- SelectionEditingBehavior.cs
- SystemWebCachingSectionGroup.cs
- QilStrConcat.cs
- PrimaryKeyTypeConverter.cs
- KeyInfo.cs
- ImportCatalogPart.cs
- Codec.cs
- ProjectionPathBuilder.cs
- CompilerGlobalScopeAttribute.cs
- XmlBindingWorker.cs
- SQLStringStorage.cs
- KeyboardDevice.cs
- DescendantBaseQuery.cs
- CompilerParameters.cs
- MimeBasePart.cs
- QueryableDataSource.cs
- CheckBoxAutomationPeer.cs
- AttachedAnnotation.cs
- ReaderWriterLock.cs
- BamlCollectionHolder.cs
- XhtmlBasicValidatorAdapter.cs
- DBSchemaRow.cs
- OrElse.cs
- TreePrinter.cs
- StringResourceManager.cs
- CollectionEditorDialog.cs
- LogEntryUtils.cs
- BamlResourceContent.cs
- PropertyOverridesTypeEditor.cs