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
- TraceListeners.cs
- MouseGesture.cs
- ButtonBaseAdapter.cs
- TextEffect.cs
- BaseTemplateCodeDomTreeGenerator.cs
- LinqTreeNodeEvaluator.cs
- StylusButtonEventArgs.cs
- SplitterDesigner.cs
- HttpProcessUtility.cs
- HtmlInputButton.cs
- ReadOnlyAttribute.cs
- RuntimeEnvironment.cs
- DateTimeFormatInfoScanner.cs
- MediaContext.cs
- BitmapEffectDrawing.cs
- Int64Storage.cs
- ResolveCriteria11.cs
- ObjectStateManager.cs
- NativeMethods.cs
- OutputWindow.cs
- XmlILStorageConverter.cs
- ToolStripGrip.cs
- SqlSupersetValidator.cs
- DiscoveryDocument.cs
- WinInet.cs
- ValuePatternIdentifiers.cs
- EventProviderWriter.cs
- FormViewRow.cs
- SafeMILHandle.cs
- ControlBindingsCollection.cs
- TextContainerChangeEventArgs.cs
- XmlnsCompatibleWithAttribute.cs
- ContentPosition.cs
- EmbeddedMailObjectsCollection.cs
- Application.cs
- EncoderParameters.cs
- CharacterString.cs
- ApplicationSecurityManager.cs
- LocalizationComments.cs
- XpsColorContext.cs
- WebPartDisplayMode.cs
- DependencyPropertyHelper.cs
- XPathException.cs
- URIFormatException.cs
- PerfCounters.cs
- RelatedView.cs
- PathNode.cs
- Table.cs
- Path.cs
- Oci.cs
- Error.cs
- ErrorActivity.cs
- ConfigXmlElement.cs
- ChangePassword.cs
- CustomWebEventKey.cs
- VersionConverter.cs
- EntityDataSourceViewSchema.cs
- InvalidWMPVersionException.cs
- DocumentViewer.cs
- StylusPointCollection.cs
- Exceptions.cs
- EditorZoneDesigner.cs
- SchemaTypeEmitter.cs
- SoapTypeAttribute.cs
- SiteMapNodeItemEventArgs.cs
- SecurityCriticalDataForSet.cs
- PropertyContainer.cs
- DESCryptoServiceProvider.cs
- HtmlInputRadioButton.cs
- WinInetCache.cs
- DataGridColumn.cs
- RequestStatusBarUpdateEventArgs.cs
- ComboBox.cs
- GiveFeedbackEvent.cs
- UpdateProgress.cs
- CollectionChangedEventManager.cs
- ColorConvertedBitmapExtension.cs
- BinaryMessageFormatter.cs
- ColumnWidthChangedEvent.cs
- ImageMetadata.cs
- ForeignKeyFactory.cs
- CompilationRelaxations.cs
- DataMisalignedException.cs
- Int64Converter.cs
- NullableDoubleAverageAggregationOperator.cs
- WindowsHyperlink.cs
- GradientStop.cs
- NativeMsmqMessage.cs
- ListenerElementsCollection.cs
- ModifierKeysConverter.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- NestPullup.cs
- DataGridViewCellCollection.cs
- Opcode.cs
- XmlSchemaNotation.cs
- ChildDocumentBlock.cs
- WebRequestModuleElementCollection.cs
- ReadOnlyDataSourceView.cs
- TableLayoutPanel.cs
- WpfWebRequestHelper.cs