Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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); } // assert 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(); } } }[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ObjectDataSourceSelectingEventArgs.cs
- ActiveXSite.cs
- Pair.cs
- HttpCacheParams.cs
- OdbcFactory.cs
- DesignTimeTemplateParser.cs
- SplitterPanel.cs
- XmlWrappingWriter.cs
- SHA512Cng.cs
- HttpConfigurationSystem.cs
- MemoryStream.cs
- ExpressionList.cs
- _HelperAsyncResults.cs
- TeredoHelper.cs
- ConvertTextFrag.cs
- SmtpFailedRecipientException.cs
- ProcessProtocolHandler.cs
- XmlKeywords.cs
- AlternateViewCollection.cs
- MatrixTransform3D.cs
- DecimalConverter.cs
- SchemaManager.cs
- Vector3DAnimationUsingKeyFrames.cs
- EntitySqlException.cs
- MouseEventArgs.cs
- ListViewGroupConverter.cs
- TableCell.cs
- ReplyChannelAcceptor.cs
- ResponseBodyWriter.cs
- ZipIOBlockManager.cs
- ReachIDocumentPaginatorSerializer.cs
- DecoratedNameAttribute.cs
- listitem.cs
- InputEventArgs.cs
- columnmapkeybuilder.cs
- WindowsAuthenticationEventArgs.cs
- PackageRelationshipCollection.cs
- PrintController.cs
- Pair.cs
- Visual3D.cs
- PersonalizationAdministration.cs
- Cursor.cs
- BaseCAMarshaler.cs
- UnsafeNativeMethods.cs
- HashMembershipCondition.cs
- NonVisualControlAttribute.cs
- FirstMatchCodeGroup.cs
- SetStoryboardSpeedRatio.cs
- Form.cs
- InplaceBitmapMetadataWriter.cs
- Attributes.cs
- DesignOnlyAttribute.cs
- StateDesigner.Helpers.cs
- BezierSegment.cs
- XmlILAnnotation.cs
- TextCompositionEventArgs.cs
- VirtualPathProvider.cs
- FormViewDesigner.cs
- PersonalizableTypeEntry.cs
- ControlPersister.cs
- SharedPersonalizationStateInfo.cs
- SqlCommand.cs
- Attributes.cs
- BindingBase.cs
- IChannel.cs
- TextFormatterHost.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- ReflectEventDescriptor.cs
- ActionMessageFilterTable.cs
- DataServiceRequestException.cs
- TextEditorParagraphs.cs
- XXXOnTypeBuilderInstantiation.cs
- EventWaitHandleSecurity.cs
- ClickablePoint.cs
- StringArrayEditor.cs
- FixedFlowMap.cs
- DataGridViewColumn.cs
- ModelTreeManager.cs
- TypedReference.cs
- RenderData.cs
- TypeSystemHelpers.cs
- DeferrableContent.cs
- DataRelationPropertyDescriptor.cs
- TextTreeNode.cs
- TrailingSpaceComparer.cs
- CounterSample.cs
- ModifierKeysValueSerializer.cs
- RolePrincipal.cs
- Ports.cs
- SqlWebEventProvider.cs
- Expr.cs
- AuthenticationConfig.cs
- DesignerActionUIStateChangeEventArgs.cs
- StorageEntityTypeMapping.cs
- Menu.cs
- GridItemProviderWrapper.cs
- MappableObjectManager.cs
- TreeWalker.cs
- Ipv6Element.cs
- sitestring.cs