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
- ProcessModelInfo.cs
- ScriptHandlerFactory.cs
- SHA256.cs
- XmlSchemaComplexContentExtension.cs
- CodeSnippetExpression.cs
- elementinformation.cs
- FrameworkContentElement.cs
- StringPropertyBuilder.cs
- SQLBinaryStorage.cs
- HMACSHA1.cs
- SqlDataReader.cs
- SafeCryptHandles.cs
- StorageEndPropertyMapping.cs
- MemberBinding.cs
- ResourceReferenceExpression.cs
- AccessedThroughPropertyAttribute.cs
- UIAgentAsyncEndRequest.cs
- Pair.cs
- IndexOutOfRangeException.cs
- BitmapEffectDrawingContent.cs
- ViewBase.cs
- PrefixHandle.cs
- ThicknessAnimation.cs
- InheritablePropertyChangeInfo.cs
- TextRangeEditTables.cs
- FixedPageStructure.cs
- SqlDataSourceQueryEditorForm.cs
- SizeConverter.cs
- X509IssuerSerialKeyIdentifierClause.cs
- Win32NamedPipes.cs
- BamlResourceDeserializer.cs
- WindowsAuthenticationModule.cs
- AttachedAnnotation.cs
- HtmlProps.cs
- XPathDescendantIterator.cs
- MenuItemBindingCollection.cs
- SendingRequestEventArgs.cs
- ListDictionary.cs
- HttpFileCollection.cs
- RenderingEventArgs.cs
- RelatedCurrencyManager.cs
- TTSEvent.cs
- ToolStripTextBox.cs
- FastPropertyAccessor.cs
- AnyReturnReader.cs
- FileDetails.cs
- ToolStripDropDownItem.cs
- XmlDocumentSerializer.cs
- PrincipalPermission.cs
- TextComposition.cs
- HyperLinkDataBindingHandler.cs
- PageAsyncTask.cs
- NGCPageContentCollectionSerializerAsync.cs
- IISMapPath.cs
- NullRuntimeConfig.cs
- PrivilegedConfigurationManager.cs
- FunctionOverloadResolver.cs
- Block.cs
- ObjectDataSourceFilteringEventArgs.cs
- GPPOINT.cs
- BitmapMetadataEnumerator.cs
- PageParserFilter.cs
- ConfigurationElementCollection.cs
- SqlTopReducer.cs
- CodeTypeReferenceCollection.cs
- ColumnMapCopier.cs
- FixedTextPointer.cs
- DataGridCellsPanel.cs
- BooleanKeyFrameCollection.cs
- TextParagraphCache.cs
- TypeSystemHelpers.cs
- HtmlShimManager.cs
- _HeaderInfo.cs
- TextLineResult.cs
- NativeMethods.cs
- EventDriven.cs
- Group.cs
- SessionEndingCancelEventArgs.cs
- ProviderSettings.cs
- GeneralTransform3DCollection.cs
- Encoder.cs
- DbReferenceCollection.cs
- HttpProfileBase.cs
- TemplateManager.cs
- CachedFontFamily.cs
- nulltextnavigator.cs
- FrameworkElement.cs
- XamlReader.cs
- DataSourceHelper.cs
- DataSourceUtil.cs
- ImageField.cs
- KnownTypesProvider.cs
- StringBlob.cs
- ServiceDescriptions.cs
- SecurityRuntime.cs
- GridViewPageEventArgs.cs
- FixedSOMPage.cs
- OleDbConnectionFactory.cs
- SoapExtensionImporter.cs
- XmlElementElement.cs