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
- WsatAdminException.cs
- GACIdentityPermission.cs
- HwndSourceKeyboardInputSite.cs
- TypeExtension.cs
- ThemeableAttribute.cs
- WebContext.cs
- BinaryWriter.cs
- DataColumnMapping.cs
- DesignObjectWrapper.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- PolyLineSegment.cs
- SmiTypedGetterSetter.cs
- ConstNode.cs
- HostingEnvironment.cs
- MatrixKeyFrameCollection.cs
- WmlLabelAdapter.cs
- FixedSOMLineRanges.cs
- GetMemberBinder.cs
- InheritablePropertyChangeInfo.cs
- UIElementPropertyUndoUnit.cs
- ManipulationStartingEventArgs.cs
- RIPEMD160.cs
- StateWorkerRequest.cs
- ArrayElementGridEntry.cs
- Transform.cs
- EntityDataSourceChangingEventArgs.cs
- ProfileGroupSettingsCollection.cs
- HighContrastHelper.cs
- MouseActionValueSerializer.cs
- _SSPISessionCache.cs
- PocoPropertyAccessorStrategy.cs
- StreamMarshaler.cs
- StylusPointCollection.cs
- SQLDecimal.cs
- OpenTypeLayout.cs
- XmlMtomReader.cs
- Bookmark.cs
- WebControlAdapter.cs
- PointLight.cs
- SafeNativeMethods.cs
- Int32KeyFrameCollection.cs
- XmlUtf8RawTextWriter.cs
- Message.cs
- ObjectListCommandsPage.cs
- AuthorizationRule.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- AlphaSortedEnumConverter.cs
- HttpInputStream.cs
- AbstractDataSvcMapFileLoader.cs
- SQLChars.cs
- SafeLocalMemHandle.cs
- WebPartDisplayModeCancelEventArgs.cs
- SelfIssuedTokenFactoryCredential.cs
- DbCommandTree.cs
- ThreadStaticAttribute.cs
- FrameworkElementFactoryMarkupObject.cs
- GenericEnumConverter.cs
- NoClickablePointException.cs
- UInt64Converter.cs
- Converter.cs
- ComProxy.cs
- SrgsGrammar.cs
- SafeWaitHandle.cs
- CopyAttributesAction.cs
- NetTcpSecurity.cs
- ToolStripLabel.cs
- coordinatorscratchpad.cs
- XamlClipboardData.cs
- EdgeModeValidation.cs
- SplitterPanel.cs
- PLINQETWProvider.cs
- AutomationPattern.cs
- DataDocumentXPathNavigator.cs
- BufferedGraphics.cs
- GridViewDeletedEventArgs.cs
- InstancePersistenceCommandException.cs
- Point3DCollectionConverter.cs
- CompareInfo.cs
- ModelFunction.cs
- MenuAutomationPeer.cs
- RelativeSource.cs
- HandledEventArgs.cs
- SemaphoreSecurity.cs
- ColorBlend.cs
- GB18030Encoding.cs
- DispatchWrapper.cs
- localization.cs
- StylusButtonCollection.cs
- Rect.cs
- CqlParserHelpers.cs
- RadioButtonBaseAdapter.cs
- Validator.cs
- ElementsClipboardData.cs
- SocketAddress.cs
- WorkflowPersistenceContext.cs
- _Semaphore.cs
- ElementInit.cs
- FileChangesMonitor.cs
- NCryptNative.cs
- TabletDevice.cs