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
- BoolExpression.cs
- Rectangle.cs
- documentsequencetextpointer.cs
- BamlRecordReader.cs
- SqlUnionizer.cs
- WindowsListViewGroup.cs
- Rijndael.cs
- SqlExpander.cs
- Point.cs
- MetricEntry.cs
- WeakKeyDictionary.cs
- TextEncodedRawTextWriter.cs
- ReferenceEqualityComparer.cs
- DataSvcMapFile.cs
- LambdaCompiler.Generated.cs
- BitmapScalingModeValidation.cs
- ButtonRenderer.cs
- StylusPointCollection.cs
- FlowLayoutSettings.cs
- ConfigurationSectionCollection.cs
- SpellerInterop.cs
- InvalidPropValue.cs
- MetaColumn.cs
- EtwTrace.cs
- ListViewItemMouseHoverEvent.cs
- DataGridViewDataErrorEventArgs.cs
- ConfigurationSettings.cs
- XmlHierarchicalDataSourceView.cs
- SoapEnvelopeProcessingElement.cs
- InternalConfigHost.cs
- HostingEnvironment.cs
- ModelTreeEnumerator.cs
- EventWaitHandleSecurity.cs
- XmlSchemaElement.cs
- InputManager.cs
- PartialCachingControl.cs
- PartManifestEntry.cs
- NullableLongSumAggregationOperator.cs
- CheckPair.cs
- DoubleConverter.cs
- XmlValueConverter.cs
- ExpressionBinding.cs
- TerminatorSinks.cs
- IdentitySection.cs
- PolyQuadraticBezierSegment.cs
- DelegateSerializationHolder.cs
- CdpEqualityComparer.cs
- Simplifier.cs
- WarningException.cs
- CommandConverter.cs
- NominalTypeEliminator.cs
- SafeWaitHandle.cs
- DesignBindingValueUIHandler.cs
- Line.cs
- CaseInsensitiveHashCodeProvider.cs
- GACMembershipCondition.cs
- InkCanvasSelectionAdorner.cs
- BackgroundFormatInfo.cs
- securestring.cs
- SortDescription.cs
- _UriTypeConverter.cs
- CompressedStack.cs
- InputScopeNameConverter.cs
- ProcessStartInfo.cs
- XmlDataSourceView.cs
- CleanUpVirtualizedItemEventArgs.cs
- BindingWorker.cs
- VirtualStackFrame.cs
- GroupBox.cs
- RowBinding.cs
- DataObject.cs
- Int32EqualityComparer.cs
- SafeCoTaskMem.cs
- MetadataLocation.cs
- Html32TextWriter.cs
- WindowsTreeView.cs
- MtomMessageEncoder.cs
- XsdBuildProvider.cs
- AnimationClock.cs
- Size.cs
- StyleXamlTreeBuilder.cs
- SiteMembershipCondition.cs
- HighlightVisual.cs
- PersonalizationState.cs
- ParentQuery.cs
- InkCanvasSelectionAdorner.cs
- CombinedHttpChannel.cs
- CodeGroup.cs
- Choices.cs
- TypedTableGenerator.cs
- ChangePassword.cs
- CommandBindingCollection.cs
- DetailsViewPagerRow.cs
- HtmlButton.cs
- CodeDirectoryCompiler.cs
- ConstructorNeedsTagAttribute.cs
- ObjectDataSourceStatusEventArgs.cs
- AddingNewEventArgs.cs
- SwitchLevelAttribute.cs
- PassportPrincipal.cs