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
- InkCanvasAutomationPeer.cs
- CompilerScopeManager.cs
- DataViewListener.cs
- arabicshape.cs
- HttpCacheVary.cs
- HttpSessionStateWrapper.cs
- RegexStringValidator.cs
- ObjectListCommand.cs
- SafeCryptoHandles.cs
- TextChangedEventArgs.cs
- DbSetClause.cs
- RequestTimeoutManager.cs
- EnumType.cs
- TextParagraphCache.cs
- SystemUdpStatistics.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- SiteMapDataSource.cs
- KnownTypesHelper.cs
- MultiTrigger.cs
- VariableQuery.cs
- ProgressBar.cs
- FontWeight.cs
- DataMemberAttribute.cs
- ProcessModelSection.cs
- RoutedUICommand.cs
- Peer.cs
- DecimalAnimation.cs
- __ConsoleStream.cs
- MDIWindowDialog.cs
- DataTable.cs
- ConvertEvent.cs
- ComboBox.cs
- LayoutTable.cs
- Size3D.cs
- SpeechUI.cs
- ListItemCollection.cs
- DefaultParameterValueAttribute.cs
- RefreshEventArgs.cs
- DataSourceDesigner.cs
- AssertSection.cs
- DataTransferEventArgs.cs
- TextOptionsInternal.cs
- unsafenativemethodsother.cs
- TypeNameHelper.cs
- TriggerActionCollection.cs
- GeometryDrawing.cs
- HtmlInputFile.cs
- ToolStripItemBehavior.cs
- Quad.cs
- OdbcRowUpdatingEvent.cs
- TileBrush.cs
- SoapSchemaExporter.cs
- ParserHooks.cs
- GradientSpreadMethodValidation.cs
- RepeatInfo.cs
- ParserStack.cs
- ScrollProperties.cs
- Maps.cs
- EditorPartCollection.cs
- XmlValueConverter.cs
- ReadOnlyTernaryTree.cs
- SiteOfOriginContainer.cs
- NestPullup.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- ConfigXmlCDataSection.cs
- NativeMethods.cs
- HttpModulesSection.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- WizardPanel.cs
- ResXResourceReader.cs
- FormatterServices.cs
- ClientSettingsStore.cs
- TypeConvertions.cs
- SqlProfileProvider.cs
- GridViewAutomationPeer.cs
- NativeMethods.cs
- BuildProviderCollection.cs
- PopupEventArgs.cs
- SmiContext.cs
- ClockGroup.cs
- ToolStripItemImageRenderEventArgs.cs
- ReferenceService.cs
- ProfileServiceManager.cs
- SecurityChannelFaultConverter.cs
- ComEventsHelper.cs
- FtpRequestCacheValidator.cs
- ActivityDesignerResources.cs
- OleDbConnectionFactory.cs
- EdmMember.cs
- DependencyPropertyConverter.cs
- TreeIterator.cs
- Intellisense.cs
- ProtectedConfigurationSection.cs
- ToolStripDropDown.cs
- TableRow.cs
- HitTestFilterBehavior.cs
- HwndSource.cs
- TdsParserStaticMethods.cs
- NameValuePermission.cs
- ResourcePermissionBaseEntry.cs