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
- HyperlinkAutomationPeer.cs
- SeekableReadStream.cs
- HashCodeCombiner.cs
- streamingZipPartStream.cs
- Int32Storage.cs
- XmlTextAttribute.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- PixelFormatConverter.cs
- VersionedStreamOwner.cs
- HwndTarget.cs
- SimpleMailWebEventProvider.cs
- unsafeIndexingFilterStream.cs
- UrlRoutingModule.cs
- ContainerParaClient.cs
- KeyValueConfigurationElement.cs
- TextServicesProperty.cs
- RunInstallerAttribute.cs
- Nullable.cs
- DataSourceSelectArguments.cs
- IgnoreFileBuildProvider.cs
- ConfigurationLockCollection.cs
- SerialPinChanges.cs
- LoginName.cs
- XmlToDatasetMap.cs
- DoubleIndependentAnimationStorage.cs
- HtmlShimManager.cs
- FragmentNavigationEventArgs.cs
- COM2Properties.cs
- WaitForChangedResult.cs
- DynamicValueConverter.cs
- KeyManager.cs
- DataPagerCommandEventArgs.cs
- XmlDataSourceNodeDescriptor.cs
- InputLanguageCollection.cs
- Missing.cs
- UncommonField.cs
- Token.cs
- EncryptedHeaderXml.cs
- ExpressionParser.cs
- SafeCloseHandleCritical.cs
- FixedNode.cs
- SqlMetaData.cs
- ConnectionInterfaceCollection.cs
- XmlAtomErrorReader.cs
- DocumentOrderComparer.cs
- WebPartDisplayModeCancelEventArgs.cs
- MultiBindingExpression.cs
- NewItemsContextMenuStrip.cs
- EventMap.cs
- XmlAttributeOverrides.cs
- BitSet.cs
- ProgressBar.cs
- MediaTimeline.cs
- QueryOperationResponseOfT.cs
- HttpModulesSection.cs
- SystemColors.cs
- StringUtil.cs
- HtmlInputSubmit.cs
- BackStopAuthenticationModule.cs
- WpfWebRequestHelper.cs
- DefaultWorkflowSchedulerService.cs
- Label.cs
- StringFunctions.cs
- EventLogger.cs
- GatewayIPAddressInformationCollection.cs
- EntityCommand.cs
- HttpCacheVaryByContentEncodings.cs
- DuplexChannelFactory.cs
- ContextMenuStrip.cs
- COM2Enum.cs
- Optimizer.cs
- Executor.cs
- ItemsChangedEventArgs.cs
- BamlMapTable.cs
- OleDbFactory.cs
- TreeNodeConverter.cs
- DataGridHeaderBorder.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- XmlReaderDelegator.cs
- AssemblyGen.cs
- Empty.cs
- SoapAttributes.cs
- HealthMonitoringSectionHelper.cs
- ObjectStateFormatter.cs
- InputProcessorProfiles.cs
- ConfigDefinitionUpdates.cs
- UrlPath.cs
- MarshalByRefObject.cs
- TextTabProperties.cs
- FileLogRecordHeader.cs
- ResXBuildProvider.cs
- ItemContainerGenerator.cs
- TypeToStringValueConverter.cs
- HtmlInputText.cs
- BevelBitmapEffect.cs
- AnnouncementService.cs
- ClientConfigurationSystem.cs
- GZipStream.cs
- XmlSchemaObjectCollection.cs
- ContainsRowNumberChecker.cs