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
- DocumentPage.cs
- MsmqIntegrationProcessProtocolHandler.cs
- GlobalAllocSafeHandle.cs
- RowToParametersTransformer.cs
- ScrollBarRenderer.cs
- UnknownBitmapEncoder.cs
- XmlElementAttributes.cs
- MarginsConverter.cs
- DataGridViewCellStyle.cs
- ControlCommandSet.cs
- RegexRunner.cs
- CellCreator.cs
- IndexingContentUnit.cs
- ProviderConnectionPoint.cs
- ProjectionPath.cs
- XmlDataSourceView.cs
- cache.cs
- AssociatedControlConverter.cs
- EUCJPEncoding.cs
- ItemCheckEvent.cs
- DataGridViewControlCollection.cs
- ObjectStateFormatter.cs
- NonceToken.cs
- HyperLinkStyle.cs
- OdbcConnectionHandle.cs
- FilterElement.cs
- FileNotFoundException.cs
- SizeF.cs
- BlurBitmapEffect.cs
- AlternateView.cs
- GeometryCombineModeValidation.cs
- DropDownList.cs
- StreamInfo.cs
- TracingConnectionInitiator.cs
- SQLInt16Storage.cs
- MappedMetaModel.cs
- WebPartDesigner.cs
- WebPartVerbCollection.cs
- objectresult_tresulttype.cs
- MethodSet.cs
- SectionXmlInfo.cs
- HeaderedItemsControl.cs
- CryptoSession.cs
- SettingsAttributes.cs
- DataGridTableCollection.cs
- DataGridViewRowPostPaintEventArgs.cs
- Encoder.cs
- WindowsStatic.cs
- TreeViewAutomationPeer.cs
- xdrvalidator.cs
- ProviderMetadataCachedInformation.cs
- SeverityFilter.cs
- SamlSerializer.cs
- EntityViewGenerationAttribute.cs
- HttpCookieCollection.cs
- HtmlProps.cs
- BoundingRectTracker.cs
- LinqDataSourceSelectEventArgs.cs
- UserCancellationException.cs
- DateTimeValueSerializer.cs
- Screen.cs
- MsmqProcessProtocolHandler.cs
- SecurityTokenProvider.cs
- smtppermission.cs
- HtmlFormAdapter.cs
- EntitySqlQueryCacheKey.cs
- AttachmentService.cs
- StylusTip.cs
- ReadWriteObjectLock.cs
- MailWebEventProvider.cs
- _FixedSizeReader.cs
- GenericIdentity.cs
- LocalizableResourceBuilder.cs
- RelationshipConstraintValidator.cs
- ListViewDeleteEventArgs.cs
- ListBindableAttribute.cs
- RuntimeConfigLKG.cs
- PropertyGrid.cs
- CircleHotSpot.cs
- TableRow.cs
- BrowsableAttribute.cs
- Propagator.JoinPropagator.cs
- InfoCardHelper.cs
- WorkflowNamespace.cs
- FieldDescriptor.cs
- Function.cs
- URI.cs
- Color.cs
- CodeTypeOfExpression.cs
- Select.cs
- Operators.cs
- CodeAttributeDeclaration.cs
- MembershipValidatePasswordEventArgs.cs
- NamespaceInfo.cs
- RepeaterItem.cs
- ComboBox.cs
- OpCellTreeNode.cs
- CheckBoxDesigner.cs
- WsdlInspector.cs
- BasicKeyConstraint.cs