Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / NativeActivity.cs / 1305376 / NativeActivity.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities { using System.Activities.Runtime; using System.Activities.Validation; using System.Collections.Generic; using System.Runtime; using System.Runtime.Serialization; public abstract class NativeActivity : Activity { protected NativeActivity() : base() { } [IgnoreDataMember] [Fx.Tag.KnownXamlExternal] protected sealed override FuncImplementation { get { return null; } set { if (value != null) { throw FxTrace.Exception.AsError(new NotSupportedException()); } } } protected virtual bool CanInduceIdle { get { return false; } } internal override bool InternalCanInduceIdle { get { return this.CanInduceIdle; } } protected abstract void Execute(NativeActivityContext context); protected virtual void Abort(NativeActivityAbortContext context) { } protected virtual void Cancel(NativeActivityContext context) { if (!context.IsCancellationRequested) { throw FxTrace.Exception.AsError(new InvalidOperationException(SR.DefaultCancelationRequiresCancelHasBeenRequested)); } context.Cancel(); } sealed internal override void OnInternalCacheMetadata(bool createEmptyBindings) { NativeActivityMetadata metadata = new NativeActivityMetadata(this, GetParentEnvironment(), createEmptyBindings); CacheMetadata(metadata); metadata.Dispose(); } protected sealed override void CacheMetadata(ActivityMetadata metadata) { throw FxTrace.Exception.AsError(new InvalidOperationException(SR.WrongCacheMetadataForNativeActivity)); } protected virtual void CacheMetadata(NativeActivityMetadata metadata) { ReflectedInformation information = new ReflectedInformation(this); // We bypass the metadata structure to avoid the checks for null entries SetArgumentsCollection(information.GetArguments(), metadata.CreateEmptyBindings); SetChildrenCollection(information.GetChildren()); SetDelegatesCollection(information.GetDelegates()); SetVariablesCollection(information.GetVariables()); } internal override void InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) { NativeActivityContext context = executor.NativeActivityContextPool.Acquire(); try { context.Initialize(instance, executor, bookmarkManager); Execute(context); } finally { context.Dispose(); executor.NativeActivityContextPool.Release(context); } } internal override void InternalAbort(ActivityInstance instance, ActivityExecutor executor, Exception terminationReason) { NativeActivityAbortContext context = new NativeActivityAbortContext(instance, executor, terminationReason); try { Abort(context); } finally { context.Dispose(); } } internal override void InternalCancel(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) { NativeActivityContext context = executor.NativeActivityContextPool.Acquire(); try { context.Initialize(instance, executor, bookmarkManager); Cancel(context); } finally { context.Dispose(); executor.NativeActivityContextPool.Release(context); } } } public abstract class NativeActivity : Activity { protected NativeActivity() : base() { } [IgnoreDataMember] [Fx.Tag.KnownXamlExternal] protected sealed override Func Implementation { get { return null; } set { if (value != null) { throw FxTrace.Exception.AsError(new NotSupportedException()); } } } protected virtual bool CanInduceIdle { get { return false; } } internal override bool InternalCanInduceIdle { get { return this.CanInduceIdle; } } protected abstract void Execute(NativeActivityContext context); protected virtual void Abort(NativeActivityAbortContext context) { } protected virtual void Cancel(NativeActivityContext context) { if (!context.IsCancellationRequested) { throw FxTrace.Exception.AsError(new InvalidOperationException(SR.DefaultCancelationRequiresCancelHasBeenRequested)); } context.Cancel(); } sealed internal override void OnInternalCacheMetadataExceptResult(bool createEmptyBindings) { NativeActivityMetadata metadata = new NativeActivityMetadata(this, GetParentEnvironment(), createEmptyBindings); CacheMetadata(metadata); metadata.Dispose(); } protected sealed override void CacheMetadata(ActivityMetadata metadata) { throw FxTrace.Exception.AsError(new InvalidOperationException(SR.WrongCacheMetadataForNativeActivity)); } protected virtual void CacheMetadata(NativeActivityMetadata metadata) { ReflectedInformation information = new ReflectedInformation(this); // We bypass the metadata structure to avoid the checks for null entries SetArgumentsCollection(information.GetArguments(), metadata.CreateEmptyBindings); SetChildrenCollection(information.GetChildren()); SetDelegatesCollection(information.GetDelegates()); SetVariablesCollection(information.GetVariables()); } internal override void InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) { NativeActivityContext context = executor.NativeActivityContextPool.Acquire(); try { context.Initialize(instance, executor, bookmarkManager); Execute(context); } finally { context.Dispose(); executor.NativeActivityContextPool.Release(context); } } internal override void InternalAbort(ActivityInstance instance, ActivityExecutor executor, Exception terminationReason) { NativeActivityAbortContext context = new NativeActivityAbortContext(instance, executor, terminationReason); try { Abort(context); } finally { context.Dispose(); } } internal override void InternalCancel(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) { NativeActivityContext context = executor.NativeActivityContextPool.Acquire(); try { context.Initialize(instance, executor, bookmarkManager); Cancel(context); } finally { context.Dispose(); executor.NativeActivityContextPool.Release(context); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProviderUtil.cs
- GeneratedCodeAttribute.cs
- FlowDecision.cs
- SimpleWebHandlerParser.cs
- Directory.cs
- OdbcCommandBuilder.cs
- StylusTouchDevice.cs
- DelimitedListTraceListener.cs
- Emitter.cs
- BindingBase.cs
- DataGridViewComboBoxCell.cs
- SafeHandle.cs
- ObjectQueryExecutionPlan.cs
- AvTraceFormat.cs
- ForeignConstraint.cs
- SafeSystemMetrics.cs
- CubicEase.cs
- LineServicesRun.cs
- ConfigXmlSignificantWhitespace.cs
- FormViewDeletedEventArgs.cs
- EntityDataSourceDesigner.cs
- DisplayNameAttribute.cs
- CapabilitiesPattern.cs
- EntityContainerRelationshipSet.cs
- PopupEventArgs.cs
- HashUtility.cs
- XmlWriterSettings.cs
- PolyLineSegment.cs
- StylusSystemGestureEventArgs.cs
- TextReader.cs
- RepeaterCommandEventArgs.cs
- ManifestResourceInfo.cs
- SHA256.cs
- FileIOPermission.cs
- WorkflowWebService.cs
- CopyNamespacesAction.cs
- OletxCommittableTransaction.cs
- AnimatedTypeHelpers.cs
- ContentControl.cs
- SettingsProperty.cs
- HttpProcessUtility.cs
- DataSourceListEditor.cs
- DebugHandleTracker.cs
- IndependentAnimationStorage.cs
- InheritedPropertyChangedEventArgs.cs
- DataFormat.cs
- SafeHandle.cs
- TableFieldsEditor.cs
- hebrewshape.cs
- FontEmbeddingManager.cs
- AncillaryOps.cs
- UpnEndpointIdentity.cs
- BamlBinaryWriter.cs
- Span.cs
- HttpTransportElement.cs
- ParserContext.cs
- MasterPageParser.cs
- Soap12ProtocolReflector.cs
- ISCIIEncoding.cs
- unsafenativemethodstextservices.cs
- GlyphManager.cs
- FormViewInsertedEventArgs.cs
- TreeNodeStyleCollectionEditor.cs
- Msec.cs
- MetadataStore.cs
- TreeNodeStyleCollectionEditor.cs
- ConnectionsZone.cs
- DesignerLoader.cs
- GeneralTransform3DCollection.cs
- infer.cs
- LambdaCompiler.Logical.cs
- Compiler.cs
- DescendantQuery.cs
- TimeStampChecker.cs
- TextSelectionProcessor.cs
- MetadataArtifactLoader.cs
- TileBrush.cs
- NameSpaceExtractor.cs
- StatusBarPanel.cs
- StateBag.cs
- UnsafeNativeMethods.cs
- Button.cs
- DataTableReader.cs
- RegexFCD.cs
- AliasGenerator.cs
- MaskedTextBox.cs
- ArrayList.cs
- KnownTypeAttribute.cs
- InlineUIContainer.cs
- FixedSOMSemanticBox.cs
- CapabilitiesUse.cs
- SamlAuthenticationClaimResource.cs
- DatagridviewDisplayedBandsData.cs
- AutomationTextAttribute.cs
- ToggleButton.cs
- UpdatePanelControlTrigger.cs
- FunctionParameter.cs
- BindingExpression.cs
- PrefixQName.cs
- ErrorsHelper.cs