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
- PropertyManager.cs
- BaseAddressElementCollection.cs
- __ConsoleStream.cs
- XmlWrappingReader.cs
- RectAnimationUsingKeyFrames.cs
- ScriptControlManager.cs
- UriExt.cs
- TrackBar.cs
- XPathNavigatorReader.cs
- ExpressionConverter.cs
- Transform3D.cs
- WebPartConnection.cs
- CreateUserWizard.cs
- DeviceContexts.cs
- InternalCache.cs
- MenuAdapter.cs
- RoleService.cs
- GridViewRow.cs
- ProcessModuleCollection.cs
- WebMessageEncodingElement.cs
- SubpageParaClient.cs
- GiveFeedbackEvent.cs
- BitmapEffectGroup.cs
- BuildManager.cs
- SearchExpression.cs
- Unit.cs
- OptimizedTemplateContentHelper.cs
- TdsParserSessionPool.cs
- BitStream.cs
- BitmapMetadataBlob.cs
- TextPointer.cs
- OutputCacheProviderCollection.cs
- XhtmlBasicPanelAdapter.cs
- DbConnectionPoolCounters.cs
- MemberProjectedSlot.cs
- ExternalException.cs
- ContextMenuAutomationPeer.cs
- StrokeNode.cs
- StylusEditingBehavior.cs
- TriggerCollection.cs
- OleDbRowUpdatedEvent.cs
- CapabilitiesPattern.cs
- WindowsPrincipal.cs
- ContextCorrelationInitializer.cs
- MemberPath.cs
- OracleParameterCollection.cs
- DataPager.cs
- TextSearch.cs
- FileDataSourceCache.cs
- FixedPage.cs
- OneOfScalarConst.cs
- SessionSwitchEventArgs.cs
- XsltOutput.cs
- Scanner.cs
- MethodRental.cs
- FontEmbeddingManager.cs
- ErrorHandler.cs
- EventWaitHandle.cs
- CaseStatement.cs
- LinearGradientBrush.cs
- iisPickupDirectory.cs
- _RequestCacheProtocol.cs
- InboundActivityHelper.cs
- ErrorInfoXmlDocument.cs
- ObjectViewEntityCollectionData.cs
- TextFormattingConverter.cs
- SvcMapFileSerializer.cs
- EmptyReadOnlyDictionaryInternal.cs
- XamlSerializer.cs
- TextChangedEventArgs.cs
- HttpContext.cs
- RepeaterItem.cs
- WindowsSolidBrush.cs
- LogRestartAreaEnumerator.cs
- WinEventHandler.cs
- AppDomainAttributes.cs
- Crypto.cs
- QueryTask.cs
- InvalidFilterCriteriaException.cs
- ShaderRenderModeValidation.cs
- MobileErrorInfo.cs
- Simplifier.cs
- Command.cs
- InfoCardX509Validator.cs
- CultureTable.cs
- SecurityManager.cs
- PersonalizableTypeEntry.cs
- CellNormalizer.cs
- DiffuseMaterial.cs
- AccessDataSource.cs
- ServiceEndpoint.cs
- _SslState.cs
- DrawingGroup.cs
- RangeBase.cs
- GeneralTransformGroup.cs
- RectangleHotSpot.cs
- DataComponentNameHandler.cs
- XmlNode.cs
- _LoggingObject.cs
- CompatibleComparer.cs