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
- WindowsListViewGroup.cs
- InvalidEnumArgumentException.cs
- SecurityDescriptor.cs
- FunctionGenerator.cs
- DBCommand.cs
- VScrollBar.cs
- ComponentCommands.cs
- ContentTextAutomationPeer.cs
- Composition.cs
- TextContainerChangedEventArgs.cs
- StrongNameUtility.cs
- WbmpConverter.cs
- Point4D.cs
- GraphicsContainer.cs
- RoleExceptions.cs
- AutomationIdentifier.cs
- PaintEvent.cs
- Size.cs
- BitmapScalingModeValidation.cs
- ThemeInfoAttribute.cs
- BaseTemplateCodeDomTreeGenerator.cs
- SmtpReplyReaderFactory.cs
- GridViewRow.cs
- DBParameter.cs
- LessThanOrEqual.cs
- HtmlFormAdapter.cs
- SubMenuStyleCollection.cs
- MetadataWorkspace.cs
- ImpersonateTokenRef.cs
- EventLogQuery.cs
- PageBreakRecord.cs
- ServerType.cs
- StartUpEventArgs.cs
- CheckBoxFlatAdapter.cs
- CookieParameter.cs
- HashHelpers.cs
- AuthenticatingEventArgs.cs
- SQLInt32Storage.cs
- RandomNumberGenerator.cs
- StringResourceManager.cs
- SelectionItemPattern.cs
- AssemblyResourceLoader.cs
- HMACSHA512.cs
- NameValuePermission.cs
- SiteOfOriginContainer.cs
- MemoryFailPoint.cs
- ConnectionsZone.cs
- PermissionSet.cs
- Exception.cs
- MetadataPropertyvalue.cs
- SecurityPolicySection.cs
- KeyedHashAlgorithm.cs
- PageThemeBuildProvider.cs
- CodeDomConfigurationHandler.cs
- WeakHashtable.cs
- PrtCap_Public.cs
- CategoryGridEntry.cs
- ThemeDirectoryCompiler.cs
- LoadWorkflowByInstanceKeyCommand.cs
- TabItemAutomationPeer.cs
- SemanticBasicElement.cs
- KeyGesture.cs
- DetailsViewDeletedEventArgs.cs
- UdpTransportBindingElement.cs
- SqlWebEventProvider.cs
- TabletCollection.cs
- PropertyPath.cs
- QueryResponse.cs
- RowVisual.cs
- LockedHandleGlyph.cs
- CardSpaceShim.cs
- DateTimeStorage.cs
- RedistVersionInfo.cs
- FormsAuthenticationUserCollection.cs
- Evidence.cs
- _DisconnectOverlappedAsyncResult.cs
- SQLUtility.cs
- MarkupExtensionParser.cs
- WindowsListViewScroll.cs
- IIS7UserPrincipal.cs
- ContentPropertyAttribute.cs
- GZipObjectSerializer.cs
- Underline.cs
- SqlConnectionManager.cs
- ExtractorMetadata.cs
- PartitionResolver.cs
- XmlAnyElementAttributes.cs
- UnsafePeerToPeerMethods.cs
- TargetPerspective.cs
- QuaternionAnimation.cs
- AndCondition.cs
- SingleAnimation.cs
- DocumentStream.cs
- LambdaValue.cs
- HistoryEventArgs.cs
- ResolveCriteriaCD1.cs
- DataReceivedEventArgs.cs
- SizeChangedInfo.cs
- Thread.cs
- Barrier.cs