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
- ConfigurationProviderException.cs
- XD.cs
- CorrelationToken.cs
- XmlCharType.cs
- SecUtil.cs
- ServerType.cs
- CreateWorkflowOwnerCommand.cs
- DataFormats.cs
- ZipIOLocalFileHeader.cs
- LocationFactory.cs
- HttpResponseWrapper.cs
- SpecularMaterial.cs
- DataControlImageButton.cs
- DeviceSpecificChoiceCollection.cs
- SamlConditions.cs
- TypeElement.cs
- FunctionMappingTranslator.cs
- WmlListAdapter.cs
- BitmapEffectGroup.cs
- EncoderBestFitFallback.cs
- CompilationLock.cs
- QuaternionAnimation.cs
- webeventbuffer.cs
- TableProviderWrapper.cs
- CharUnicodeInfo.cs
- DefaultPrintController.cs
- UpdatableGenericsFeature.cs
- XmlBufferReader.cs
- TrackingExtract.cs
- GACMembershipCondition.cs
- LinqDataSourceEditData.cs
- ContextMarshalException.cs
- XmlChildNodes.cs
- Control.cs
- ShutDownListener.cs
- StoreAnnotationsMap.cs
- ScrollBar.cs
- PerspectiveCamera.cs
- XmlWriterTraceListener.cs
- DockAndAnchorLayout.cs
- TextRangeEditLists.cs
- Line.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- OdbcPermission.cs
- TableRowsCollectionEditor.cs
- LineUtil.cs
- LinqDataSourceValidationException.cs
- URLIdentityPermission.cs
- SafeNativeMethods.cs
- OdbcConnectionFactory.cs
- GrammarBuilderPhrase.cs
- InboundActivityHelper.cs
- ConfigurationStrings.cs
- SolidColorBrush.cs
- SqlCacheDependencyDatabase.cs
- XamlTypeMapper.cs
- NotifyParentPropertyAttribute.cs
- RegionIterator.cs
- ToggleButtonAutomationPeer.cs
- CompatibleComparer.cs
- SequenceQuery.cs
- XamlDesignerSerializationManager.cs
- UserPreferenceChangedEventArgs.cs
- VarRemapper.cs
- LoginUtil.cs
- WebEventTraceProvider.cs
- OutOfMemoryException.cs
- Process.cs
- SafeProcessHandle.cs
- Paragraph.cs
- Line.cs
- OutputWindow.cs
- OdbcDataReader.cs
- AgileSafeNativeMemoryHandle.cs
- AmbiguousMatchException.cs
- UrlAuthorizationModule.cs
- ExpandoClass.cs
- GenericPrincipal.cs
- SetStateEventArgs.cs
- GenericRootAutomationPeer.cs
- Collection.cs
- ReferenceEqualityComparer.cs
- MachinePropertyVariants.cs
- FastEncoderWindow.cs
- BasicHttpSecurityMode.cs
- CatalogPartCollection.cs
- ConfigurationSection.cs
- SHA1Managed.cs
- columnmapkeybuilder.cs
- PerspectiveCamera.cs
- ConfigurationSettings.cs
- WindowsRegion.cs
- __Filters.cs
- CachedCompositeFamily.cs
- Certificate.cs
- Int32CollectionValueSerializer.cs
- PropertyDescriptorGridEntry.cs
- AsymmetricSignatureDeformatter.cs
- MemoryRecordBuffer.cs
- DbConnectionPoolCounters.cs