Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / Util / WorkItem.cs / 1 / WorkItem.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Util { using System.Runtime.InteropServices; using System.Security.Permissions; using System.Threading; // // Support for positing of work items to a different thread // ////// public delegate void WorkItemCallback(); ///[To be supplied.] ////// [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class WorkItem { private static bool _useQueueUserWorkItem = true; private static WaitCallback _onQueueUserWorkItemCompletion = new WaitCallback(OnQueueUserWorkItemCompletion); ///[To be supplied.] ////// [SecurityPermission(SecurityAction.Demand, Unrestricted=true)] public static void Post(WorkItemCallback callback) { #if !FEATURE_PAL // ROTORTODO if (Environment.OSVersion.Platform != PlatformID.Win32NT) throw new PlatformNotSupportedException(SR.GetString(SR.RequiresNT)); #else // !FEATURE_PAL throw new NotImplementedException("ROTORTODO"); #endif // !FEATURE_PAL PostInternal(callback); } // assertt to disregard the user code up the compressed stack [PermissionSet(SecurityAction.Assert, Unrestricted=true)] private static void CallCallbackWithAssert(WorkItemCallback callback) { callback(); } private static void OnQueueUserWorkItemCompletion(Object state) { WorkItemCallback callback = state as WorkItemCallback; if (callback != null) { CallCallbackWithAssert(callback); } } internal static void PostInternal(WorkItemCallback callback) { if (_useQueueUserWorkItem) { ThreadPool.QueueUserWorkItem(_onQueueUserWorkItemCompletion, callback); } else { WrappedWorkItemCallback w = new WrappedWorkItemCallback(callback); w.Post(); } } } internal class WrappedWorkItemCallback { private GCHandle _rootedThis; private WorkItemCallback _originalCallback; private WorkItemCallback _wrapperCallback; internal WrappedWorkItemCallback(WorkItemCallback callback) { _originalCallback = callback; _wrapperCallback = new WorkItemCallback(this.OnCallback); } internal void Post() { _rootedThis = GCHandle.Alloc(this); if (UnsafeNativeMethods.PostThreadPoolWorkItem(_wrapperCallback) != 1) { _rootedThis.Free(); throw new HttpException(SR.GetString(SR.Cannot_post_workitem)); } } private void OnCallback() { _rootedThis.Free(); _originalCallback(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.[To be supplied.] ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ControlBindingsCollection.cs
- MaxValueConverter.cs
- IISMapPath.cs
- PropertySet.cs
- ApplicationInfo.cs
- TextEditorTyping.cs
- DataGridCheckBoxColumn.cs
- ConnectionStringSettingsCollection.cs
- XmlMembersMapping.cs
- DocumentEventArgs.cs
- DispatcherHooks.cs
- ArrayElementGridEntry.cs
- MessageSecurityVersion.cs
- SqlGatherConsumedAliases.cs
- PropertyGroupDescription.cs
- SoapEnumAttribute.cs
- FlowDocumentPage.cs
- MultiTrigger.cs
- DataFormats.cs
- WmlObjectListAdapter.cs
- SafeCoTaskMem.cs
- StreamGeometryContext.cs
- sapiproxy.cs
- AutomationElement.cs
- TogglePattern.cs
- COM2ExtendedBrowsingHandler.cs
- CriticalHandle.cs
- ParsedRoute.cs
- WindowsSolidBrush.cs
- MemoryMappedFileSecurity.cs
- XPathNodeIterator.cs
- DefaultExpression.cs
- MaterializeFromAtom.cs
- AutomationPeer.cs
- NonDualMessageSecurityOverHttpElement.cs
- SerializationSectionGroup.cs
- CodeNamespace.cs
- MenuItemStyleCollectionEditor.cs
- Blend.cs
- WebPartCatalogAddVerb.cs
- RoleManagerModule.cs
- RegistryPermission.cs
- GeometryModel3D.cs
- CommonXSendMessage.cs
- Conditional.cs
- Int32RectValueSerializer.cs
- PbrsForward.cs
- LinqDataSource.cs
- ParallelRangeManager.cs
- DependencyProperty.cs
- ADMembershipProvider.cs
- WindowsGraphics2.cs
- SectionInformation.cs
- EntityCollection.cs
- FlowDocumentReader.cs
- HostSecurityManager.cs
- Logging.cs
- TransformGroup.cs
- UriSectionData.cs
- SearchExpression.cs
- SecureStringHasher.cs
- InstanceOwnerException.cs
- OpenTypeMethods.cs
- AffineTransform3D.cs
- CellParagraph.cs
- ContainerVisual.cs
- IDReferencePropertyAttribute.cs
- StaticTextPointer.cs
- Style.cs
- errorpatternmatcher.cs
- HttpDebugHandler.cs
- CodeGeneratorOptions.cs
- DrawingCollection.cs
- EdmItemCollection.cs
- FilterException.cs
- ContextBase.cs
- Converter.cs
- VerificationException.cs
- ArrayElementGridEntry.cs
- BrowserTree.cs
- ChangeTracker.cs
- StateDesigner.cs
- DataColumnCollection.cs
- SqlDependencyUtils.cs
- ContentType.cs
- UnitySerializationHolder.cs
- StickyNoteAnnotations.cs
- InstanceCollisionException.cs
- DocComment.cs
- TypeDescriptionProvider.cs
- MonthChangedEventArgs.cs
- SecurityTokenProvider.cs
- DrawTreeNodeEventArgs.cs
- ButtonStandardAdapter.cs
- DesignOnlyAttribute.cs
- SmtpTransport.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- ReadOnlyNameValueCollection.cs
- IntMinMaxAggregationOperator.cs
- ScriptHandlerFactory.cs