Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / MS / Internal / Data / DefaultAsyncDataDispatcher.cs / 1 / DefaultAsyncDataDispatcher.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: Default async scheduler for data operations. // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Threading; using System.Windows; using System.Windows.Data; using MS.Internal; namespace MS.Internal.Data { internal class DefaultAsyncDataDispatcher : IAsyncDataDispatcher { //----------------------------------------------------- // // Interface: IAsyncDataDispatcher // //----------------------------------------------------- ///Add a request to the dispatcher's queue void IAsyncDataDispatcher.AddRequest(AsyncDataRequest request) { lock (_list.SyncRoot) { _list.Add(request); } ThreadPool.QueueUserWorkItem(new WaitCallback(ProcessRequest), request); } ///Cancel all requests in the dispatcher's queue void IAsyncDataDispatcher.CancelAllRequests() { lock (_list.SyncRoot) { for (int i=0; i<_list.Count; ++i) { AsyncDataRequest request = (AsyncDataRequest)_list[i]; request.Cancel(); } _list.Clear(); } } //------------------------------------------------------ // // Private methods // //----------------------------------------------------- // Run a single request. This method gets scheduled on a worker thread // from the process ThreadPool. void ProcessRequest(object o) { AsyncDataRequest request = (AsyncDataRequest)o; // PreSharp uses message numbers that the C# compiler doesn't know about. // Disable the C# complaints, per the PreSharp documentation. #pragma warning disable 1634, 1691 // PreSharp complains about catching NullReference (and other) exceptions. // In this case, these are precisely the ones we want to catch the most, // so that a failure on a worker thread doesn't affect the main thread. #pragma warning disable 56500 // run the request - this may take a while try { request.Complete(request.DoWork()); } // Catch all exceptions. There is no app code on the stack, // so the exception isn't actionable by the app. // Yet we don't want to crash the app. catch (Exception ex) { if (CriticalExceptions.IsCriticalException(ex)) throw; request.Fail(ex); } catch // non CLS compliant exception { request.Fail(new InvalidOperationException(SR.Get(SRID.NonCLSException, "processing an async data request"))); } #pragma warning restore 56500 #pragma warning restore 1634, 1691 // remove the request from the list lock (_list.SyncRoot) { _list.Remove(request); } } //------------------------------------------------------ // // Private data // //------------------------------------------------------ ArrayList _list = new ArrayList(); } } // 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
- OSEnvironmentHelper.cs
- TimeSpanOrInfiniteValidator.cs
- CmsInterop.cs
- EmbeddedMailObject.cs
- Msec.cs
- HandoffBehavior.cs
- ActivityValidator.cs
- TextEditorContextMenu.cs
- Classification.cs
- ProfileModule.cs
- StrongName.cs
- PathSegmentCollection.cs
- SqlGatherConsumedAliases.cs
- CodeDomSerializerException.cs
- WindowsToolbarAsMenu.cs
- SinglePageViewer.cs
- ModuleBuilder.cs
- CodePageUtils.cs
- XmlSchemaAppInfo.cs
- TransformerConfigurationWizardBase.cs
- WindowsTitleBar.cs
- UnsafeNativeMethods.cs
- ProfileGroupSettings.cs
- XmlAttributeAttribute.cs
- AuthorizationRule.cs
- TextBlockAutomationPeer.cs
- XPathAncestorQuery.cs
- ExtendedProperty.cs
- ProgressBarAutomationPeer.cs
- EtwTrace.cs
- MediaCommands.cs
- SRGSCompiler.cs
- CodeArgumentReferenceExpression.cs
- AnimationException.cs
- UnsafeMethods.cs
- SqlConnectionString.cs
- PreviewPrintController.cs
- Module.cs
- PnrpPeerResolverElement.cs
- LicenseException.cs
- MailMessageEventArgs.cs
- EntityTypeEmitter.cs
- Stacktrace.cs
- CapabilitiesUse.cs
- TypeResolvingOptionsAttribute.cs
- GeneralTransform3D.cs
- Label.cs
- WinInet.cs
- GuidelineCollection.cs
- DataGridViewCellValidatingEventArgs.cs
- GenericsInstances.cs
- MimeMultiPart.cs
- AlphaSortedEnumConverter.cs
- FormViewUpdatedEventArgs.cs
- HitTestFilterBehavior.cs
- SchemaCollectionCompiler.cs
- ActivityBuilderXamlWriter.cs
- X509ScopedServiceCertificateElement.cs
- xmlformatgeneratorstatics.cs
- Util.cs
- ItemList.cs
- CheckoutException.cs
- FreeIndexList.cs
- QilChoice.cs
- SystemTcpConnection.cs
- ImageAttributes.cs
- DeviceContext.cs
- _BufferOffsetSize.cs
- Freezable.cs
- StringSource.cs
- PolicyLevel.cs
- EmptyEnumerable.cs
- ReferencedType.cs
- MessageSecurityProtocolFactory.cs
- NativeMethods.cs
- ActivityExecutorOperation.cs
- SqlTransaction.cs
- TogglePattern.cs
- ReaderWriterLock.cs
- CodeTypeReference.cs
- EditingCommands.cs
- Helpers.cs
- ProfileEventArgs.cs
- TreeNodeCollection.cs
- Environment.cs
- QilReference.cs
- SystemResourceHost.cs
- Schema.cs
- OptimisticConcurrencyException.cs
- StringCollection.cs
- RectangleHotSpot.cs
- DesignTimeType.cs
- StrokeNode.cs
- ItemMap.cs
- UshortList2.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- RewritingSimplifier.cs
- ControlBuilder.cs
- CustomCategoryAttribute.cs
- BindingsCollection.cs