Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / Data / DefaultAsyncDataDispatcher.cs / 1305600 / 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.IsCriticalApplicationException(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
- ToolboxComponentsCreatedEventArgs.cs
- ContentElementAutomationPeer.cs
- OracleDataReader.cs
- Parser.cs
- ZipIORawDataFileBlock.cs
- TypeSystem.cs
- RootCodeDomSerializer.cs
- WeakReference.cs
- ThumbAutomationPeer.cs
- XmlSchemaGroupRef.cs
- NaturalLanguageHyphenator.cs
- CodeMemberMethod.cs
- TemplatedAdorner.cs
- SharedUtils.cs
- DBAsyncResult.cs
- Tool.cs
- EnumBuilder.cs
- GrammarBuilderRuleRef.cs
- DataGridPageChangedEventArgs.cs
- UnicodeEncoding.cs
- Blend.cs
- NamedPermissionSet.cs
- RequestNavigateEventArgs.cs
- RadialGradientBrush.cs
- AnnotationComponentManager.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- TextTabProperties.cs
- DbParameterHelper.cs
- HtmlWindow.cs
- NavigationWindow.cs
- ELinqQueryState.cs
- Walker.cs
- DateTimeFormat.cs
- OperationCanceledException.cs
- SchemaImporterExtensionElement.cs
- EmbeddedMailObject.cs
- ObjectItemNoOpAssemblyLoader.cs
- DbModificationClause.cs
- DataGridViewSortCompareEventArgs.cs
- ScriptReferenceEventArgs.cs
- DatagridviewDisplayedBandsData.cs
- EntityModelSchemaGenerator.cs
- AddInActivator.cs
- ConnectionStringsSection.cs
- DataGridViewControlCollection.cs
- XPathArrayIterator.cs
- InlineUIContainer.cs
- InvokeMethodActivity.cs
- MediaSystem.cs
- TextMetrics.cs
- TagNameToTypeMapper.cs
- UpDownBase.cs
- TreeNodeBinding.cs
- ReadOnlyHierarchicalDataSourceView.cs
- Pkcs7Signer.cs
- DataGridViewCellLinkedList.cs
- TableLayoutColumnStyleCollection.cs
- FormatPage.cs
- FilterEventArgs.cs
- DesignerFrame.cs
- ItemAutomationPeer.cs
- ResourceExpressionBuilder.cs
- AssociationType.cs
- BitmapMetadata.cs
- LayoutSettings.cs
- OciHandle.cs
- StreamSecurityUpgradeInitiatorAsyncResult.cs
- XmlSchemaSet.cs
- PointHitTestParameters.cs
- AutoGeneratedFieldProperties.cs
- InstanceDescriptor.cs
- PaintEvent.cs
- ServiceBehaviorAttribute.cs
- SkewTransform.cs
- SqlMethodCallConverter.cs
- DataGridViewBand.cs
- WebBrowserSiteBase.cs
- NetCodeGroup.cs
- TagPrefixAttribute.cs
- NativeMethods.cs
- RecordBuilder.cs
- XmlProcessingInstruction.cs
- BaseTemplatedMobileComponentEditor.cs
- ObjectStorage.cs
- LayoutEditorPart.cs
- BitmapEffect.cs
- CryptoProvider.cs
- LabelEditEvent.cs
- Internal.cs
- DesignerActionVerbItem.cs
- WS2007HttpBindingElement.cs
- ZoomPercentageConverter.cs
- MemoryMappedFileSecurity.cs
- BaseCAMarshaler.cs
- TabControlCancelEvent.cs
- NativeMethods.cs
- TextRangeProviderWrapper.cs
- StringDictionaryWithComparer.cs
- ScriptingRoleServiceSection.cs
- HwndTarget.cs