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
- ContentElementCollection.cs
- _FtpControlStream.cs
- X509SubjectKeyIdentifierClause.cs
- LocatorBase.cs
- OneOfElement.cs
- ToolStripButton.cs
- BitVec.cs
- ProviderUtil.cs
- DynamicMethod.cs
- MouseActionConverter.cs
- HashHelper.cs
- CacheManager.cs
- SubpageParaClient.cs
- UnsupportedPolicyOptionsException.cs
- ShellProvider.cs
- ToolStripInSituService.cs
- SoapExtensionReflector.cs
- PolicyLevel.cs
- NativeMethods.cs
- DelegateHelpers.cs
- MarkupCompilePass2.cs
- IOException.cs
- Rotation3DKeyFrameCollection.cs
- DesigntimeLicenseContext.cs
- FileStream.cs
- ResourceReferenceExpressionConverter.cs
- PropertyPushdownHelper.cs
- MimeXmlReflector.cs
- StreamSecurityUpgradeAcceptor.cs
- ImageListUtils.cs
- SafePipeHandle.cs
- TreeIterators.cs
- ActivityLocationReferenceEnvironment.cs
- AdCreatedEventArgs.cs
- ResourceReader.cs
- CompilerCollection.cs
- Wizard.cs
- PiiTraceSource.cs
- DrawingContext.cs
- RealizationDrawingContextWalker.cs
- EditCommandColumn.cs
- RuntimeHelpers.cs
- NotifyInputEventArgs.cs
- IconEditor.cs
- FormViewPageEventArgs.cs
- Model3DGroup.cs
- Calendar.cs
- HighlightVisual.cs
- ServiceDocumentFormatter.cs
- AuditLog.cs
- RepeaterItemEventArgs.cs
- ImageDrawing.cs
- DataGridViewBand.cs
- SafeHandle.cs
- ToolStripScrollButton.cs
- _HTTPDateParse.cs
- Exception.cs
- CheckableControlBaseAdapter.cs
- VisualStyleInformation.cs
- AppDomainShutdownMonitor.cs
- ThousandthOfEmRealPoints.cs
- AnnouncementClient.cs
- XslCompiledTransform.cs
- WebBrowser.cs
- PrimaryKeyTypeConverter.cs
- RNGCryptoServiceProvider.cs
- DataGridViewIntLinkedList.cs
- MsdtcClusterUtils.cs
- XsdDateTime.cs
- DeferredTextReference.cs
- PingReply.cs
- DesigntimeLicenseContext.cs
- HelpKeywordAttribute.cs
- NativeMethods.cs
- SingleStorage.cs
- Pair.cs
- MediaScriptCommandRoutedEventArgs.cs
- TextServicesDisplayAttributePropertyRanges.cs
- UnknownExceptionActionHelper.cs
- KeyProperty.cs
- InstanceDataCollection.cs
- PropertyCollection.cs
- MessageQueuePermissionEntry.cs
- HostedHttpTransportManager.cs
- SoapCodeExporter.cs
- LookupNode.cs
- TableItemStyle.cs
- CroppedBitmap.cs
- AsyncInvokeContext.cs
- ElementProxy.cs
- FormClosingEvent.cs
- WSSecurityOneDotZeroSendSecurityHeader.cs
- XsltException.cs
- StorageComplexTypeMapping.cs
- FormsAuthenticationEventArgs.cs
- ClientScriptItem.cs
- SmiContextFactory.cs
- XamlInt32CollectionSerializer.cs
- ApplicationFileCodeDomTreeGenerator.cs
- XmlSiteMapProvider.cs