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
- AutomationProperty.cs
- AutomationPatternInfo.cs
- ToolStripScrollButton.cs
- StylusButton.cs
- ContentOperations.cs
- Button.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- ByteStorage.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- Context.cs
- WebPartDescription.cs
- WorkflowServiceHostFactory.cs
- AttributeEmitter.cs
- OrderedDictionary.cs
- NaturalLanguageHyphenator.cs
- WebPartConnectionsCancelEventArgs.cs
- UTF32Encoding.cs
- ContractNamespaceAttribute.cs
- SectionInput.cs
- ContextStaticAttribute.cs
- TimelineGroup.cs
- SingleBodyParameterMessageFormatter.cs
- QuaternionAnimation.cs
- Schema.cs
- HwndKeyboardInputProvider.cs
- PageAsyncTask.cs
- JavascriptXmlWriterWrapper.cs
- ElementHost.cs
- CryptoConfig.cs
- COM2IPerPropertyBrowsingHandler.cs
- Crc32.cs
- GraphicsPath.cs
- DataGridViewCellStyle.cs
- PageBreakRecord.cs
- PointHitTestResult.cs
- SQLSingle.cs
- DataSourceControl.cs
- DataGridColumnCollection.cs
- GregorianCalendar.cs
- UserControl.cs
- ButtonPopupAdapter.cs
- PropertyBuilder.cs
- CompositeCollection.cs
- OperatingSystem.cs
- MdiWindowListItemConverter.cs
- BrowserDefinitionCollection.cs
- RequestDescription.cs
- PropertySegmentSerializer.cs
- OdbcError.cs
- SqlFacetAttribute.cs
- PropertyConverter.cs
- TraceUtils.cs
- GlobalDataBindingHandler.cs
- XmlDocumentType.cs
- SQLInt16.cs
- BoundingRectTracker.cs
- ProfilePropertySettingsCollection.cs
- SettingsSection.cs
- XsdBuilder.cs
- CompilationUnit.cs
- DependencyPropertyDescriptor.cs
- XmlReaderSettings.cs
- PageEventArgs.cs
- CorrelationTokenInvalidatedHandler.cs
- CodeDomSerializationProvider.cs
- x509store.cs
- ConfigXmlSignificantWhitespace.cs
- CapabilitiesPattern.cs
- PackageProperties.cs
- TypeGenericEnumerableViewSchema.cs
- ImageAutomationPeer.cs
- Point3D.cs
- CodeLinePragma.cs
- ResourceAttributes.cs
- DbConnectionPool.cs
- BuildProviderCollection.cs
- Validator.cs
- DragAssistanceManager.cs
- PropertyChangedEventArgs.cs
- PixelFormat.cs
- GatewayIPAddressInformationCollection.cs
- DataBoundLiteralControl.cs
- UntrustedRecipientException.cs
- EntityDataSourceDesigner.cs
- ManagementEventWatcher.cs
- MappingModelBuildProvider.cs
- NavigatorOutput.cs
- TemplateParser.cs
- SQLDecimalStorage.cs
- ChangePassword.cs
- EntitySetRetriever.cs
- SQLString.cs
- ArglessEventHandlerProxy.cs
- DesignerListAdapter.cs
- NaturalLanguageHyphenator.cs
- ColorAnimationBase.cs
- AuthorizationSection.cs
- BuildDependencySet.cs
- RangeValidator.cs
- CodeCastExpression.cs