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
- xdrvalidator.cs
- InkCanvasAutomationPeer.cs
- XmlSubtreeReader.cs
- MasterPageParser.cs
- HttpServerVarsCollection.cs
- __ComObject.cs
- SendMailErrorEventArgs.cs
- DeviceContext2.cs
- TabPanel.cs
- XslNumber.cs
- _Connection.cs
- UnsafeNativeMethods.cs
- PartitionedStreamMerger.cs
- SoapAttributes.cs
- TreeNodeClickEventArgs.cs
- TCPClient.cs
- GeneralTransformGroup.cs
- PointLight.cs
- HttpNamespaceReservationInstallComponent.cs
- FileUpload.cs
- SqlCacheDependencyDatabase.cs
- EntityModelBuildProvider.cs
- NativeCompoundFileAPIs.cs
- CustomDictionarySources.cs
- DCSafeHandle.cs
- WindowsFormsDesignerOptionService.cs
- HostProtectionException.cs
- URLIdentityPermission.cs
- MdiWindowListStrip.cs
- RectAnimationUsingKeyFrames.cs
- DesignerTransactionCloseEvent.cs
- DataGridGeneralPage.cs
- HostingEnvironmentException.cs
- thaishape.cs
- PrePostDescendentsWalker.cs
- RegionData.cs
- Environment.cs
- TimelineGroup.cs
- OrderByBuilder.cs
- XmlComplianceUtil.cs
- CombinedGeometry.cs
- GeneralTransform3D.cs
- WrappedIUnknown.cs
- ItemChangedEventArgs.cs
- BindToObject.cs
- EventProviderBase.cs
- HotCommands.cs
- Point3DCollectionConverter.cs
- BroadcastEventHelper.cs
- XmlArrayItemAttributes.cs
- ToolboxItemLoader.cs
- DotNetATv1WindowsLogEntryDeserializer.cs
- Attributes.cs
- initElementDictionary.cs
- ToolStripButton.cs
- WsatEtwTraceListener.cs
- TextRunCacheImp.cs
- AbandonedMutexException.cs
- FixedBufferAttribute.cs
- SingleAnimationBase.cs
- BindStream.cs
- ExceptionRoutedEventArgs.cs
- Console.cs
- UtilityExtension.cs
- DodSequenceMerge.cs
- WebConfigurationManager.cs
- ObfuscationAttribute.cs
- Keywords.cs
- Calendar.cs
- MarginCollapsingState.cs
- SimpleHandlerBuildProvider.cs
- ApplicationFileParser.cs
- ThreadBehavior.cs
- LogPolicy.cs
- path.cs
- BooleanKeyFrameCollection.cs
- AssertFilter.cs
- BlockUIContainer.cs
- Bidi.cs
- RegisteredDisposeScript.cs
- RuntimeConfigLKG.cs
- LayoutInformation.cs
- ValidationRuleCollection.cs
- AutoGeneratedFieldProperties.cs
- XsdDuration.cs
- ComponentResourceKey.cs
- ComponentEditorPage.cs
- ExpressionBuilder.cs
- GPRECTF.cs
- StructuralObject.cs
- BaseDataBoundControl.cs
- HtmlTableRow.cs
- ProfessionalColors.cs
- Scripts.cs
- KnownBoxes.cs
- RootProfilePropertySettingsCollection.cs
- FixedDocument.cs
- FirstMatchCodeGroup.cs
- RequestQueue.cs
- MethodImplAttribute.cs