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
- ClipboardData.cs
- BCryptHashAlgorithm.cs
- CacheEntry.cs
- UnsafeNativeMethods.cs
- URL.cs
- DefaultValueTypeConverter.cs
- WmlPageAdapter.cs
- FilterQueryOptionExpression.cs
- SelectedDatesCollection.cs
- ClientConfigurationSystem.cs
- PrtTicket_Public_Simple.cs
- ListenerAdaptersInstallComponent.cs
- Misc.cs
- TextEndOfLine.cs
- EFDataModelProvider.cs
- Quaternion.cs
- BufferedStream2.cs
- DataGridViewRowEventArgs.cs
- DBCommandBuilder.cs
- DateBoldEvent.cs
- AuthenticateEventArgs.cs
- SqlBulkCopyColumnMapping.cs
- WinEventQueueItem.cs
- ConfigurationSettings.cs
- DocumentApplicationJournalEntryEventArgs.cs
- WebResourceAttribute.cs
- ActivityExecutionFilter.cs
- NetworkInterface.cs
- RefreshEventArgs.cs
- FileSystemEventArgs.cs
- ListViewInsertedEventArgs.cs
- SHA256Managed.cs
- DefinitionBase.cs
- GeometryConverter.cs
- BaseDataList.cs
- SerializerDescriptor.cs
- WebScriptClientGenerator.cs
- WebResourceAttribute.cs
- ProfileInfo.cs
- ImageListUtils.cs
- RedirectionProxy.cs
- embossbitmapeffect.cs
- GeneralTransform3DCollection.cs
- ObjectDataSourceEventArgs.cs
- SizeFConverter.cs
- DelegatingConfigHost.cs
- Pen.cs
- DataGridViewCellValidatingEventArgs.cs
- HttpClientCertificate.cs
- ScrollEvent.cs
- PlainXmlDeserializer.cs
- EncoderFallback.cs
- NaturalLanguageHyphenator.cs
- FrameSecurityDescriptor.cs
- GatewayIPAddressInformationCollection.cs
- WorkflowOperationAsyncResult.cs
- CodeSnippetStatement.cs
- ProtocolViolationException.cs
- Pen.cs
- SystemBrushes.cs
- DrawingContext.cs
- HttpCachePolicyWrapper.cs
- SecurityDocument.cs
- RuleInfoComparer.cs
- IdentityHolder.cs
- TabControlEvent.cs
- AffineTransform3D.cs
- GregorianCalendarHelper.cs
- PriorityRange.cs
- newitemfactory.cs
- DetailsViewPagerRow.cs
- MaskPropertyEditor.cs
- TextEditorLists.cs
- FixedDocumentPaginator.cs
- SubtreeProcessor.cs
- DropDownList.cs
- FontDialog.cs
- EntityTypeBase.cs
- EnumerableCollectionView.cs
- DocumentSequenceHighlightLayer.cs
- Sentence.cs
- IntMinMaxAggregationOperator.cs
- SymmetricKey.cs
- SqlError.cs
- MemberMemberBinding.cs
- OutputCacheModule.cs
- AssociationProvider.cs
- TypeSemantics.cs
- RegexGroup.cs
- ParameterCollection.cs
- ServiceBusyException.cs
- TabControlAutomationPeer.cs
- DataPager.cs
- XamlTemplateSerializer.cs
- DbDeleteCommandTree.cs
- Blend.cs
- XmlQueryRuntime.cs
- DependencyObjectValidator.cs
- BindingExpressionUncommonField.cs
- OpCopier.cs