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
- sqlstateclientmanager.cs
- Clipboard.cs
- HttpPostedFile.cs
- MsmqDiagnostics.cs
- ToolBarPanel.cs
- ListChangedEventArgs.cs
- SelectionEditingBehavior.cs
- thaishape.cs
- DesignUtil.cs
- GroupBox.cs
- AmbientLight.cs
- XmlSchemaInfo.cs
- MappingModelBuildProvider.cs
- ConfigurationException.cs
- CompositionAdorner.cs
- NativeMethods.cs
- SafeRegistryHandle.cs
- SelectionPattern.cs
- ActiveXHost.cs
- Dump.cs
- cookiecollection.cs
- EntityDataSourceChangedEventArgs.cs
- NavigatorOutput.cs
- SqlFactory.cs
- CategoryNameCollection.cs
- SqlCachedBuffer.cs
- ObjectTokenCategory.cs
- RepeatInfo.cs
- basemetadatamappingvisitor.cs
- ZoneMembershipCondition.cs
- ExtensionFile.cs
- WebPartMenuStyle.cs
- Ticks.cs
- LowerCaseStringConverter.cs
- Attributes.cs
- HttpListenerContext.cs
- ClipboardData.cs
- TextSelectionProcessor.cs
- ThaiBuddhistCalendar.cs
- StandardToolWindows.cs
- EventLogPropertySelector.cs
- LoadedOrUnloadedOperation.cs
- PolyBezierSegment.cs
- ProxyGenerationError.cs
- VBIdentifierNameEditor.cs
- ClientRolePrincipal.cs
- WindowsListBox.cs
- BasicCellRelation.cs
- LineVisual.cs
- SqlTriggerContext.cs
- _SslStream.cs
- FileSecurity.cs
- TargetParameterCountException.cs
- XmlStringTable.cs
- EntityDataSourceDesignerHelper.cs
- ImageMetadata.cs
- BuildTopDownAttribute.cs
- DataServiceQueryOfT.cs
- HttpHeaderCollection.cs
- IndentedTextWriter.cs
- ModifiableIteratorCollection.cs
- Control.cs
- ConnectionManagementElementCollection.cs
- RuntimeIdentifierPropertyAttribute.cs
- TimeSpanHelper.cs
- Material.cs
- AttachmentCollection.cs
- CategoryNameCollection.cs
- Enlistment.cs
- ActivityInterfaces.cs
- InvokeMethodDesigner.xaml.cs
- CatalogPartCollection.cs
- NativeMethods.cs
- DataServiceBehavior.cs
- Literal.cs
- ResourcePermissionBase.cs
- HotSpot.cs
- StringWriter.cs
- XmlSchemaAnnotated.cs
- SessionConnectionReader.cs
- RecognizeCompletedEventArgs.cs
- SQLBytesStorage.cs
- EventMappingSettingsCollection.cs
- HttpClientCertificate.cs
- RowToFieldTransformer.cs
- Thickness.cs
- HMACMD5.cs
- DataGridClipboardCellContent.cs
- XamlPointCollectionSerializer.cs
- HwndHostAutomationPeer.cs
- Parser.cs
- WindowsListViewGroupSubsetLink.cs
- EventWaitHandleSecurity.cs
- DrawingAttributeSerializer.cs
- DataGridViewCellCancelEventArgs.cs
- HttpListenerRequest.cs
- MissingSatelliteAssemblyException.cs
- KeyboardDevice.cs
- VectorAnimationBase.cs
- XpsLiterals.cs