子アクティビティのコレクションを使用して、カスタムのネイティブアクティビティを作成しました。いずれかのアクティビティが失敗した場合、子アクティビティをキャンセルしようとしています。context.CancelChildren()を呼び出すと、子アクティビティでキャンセルが呼び出されません。
以下に例を示します。
public sealed class MyCompositeActivity : NativeActivity
{
public Collection<Activity> Activities { get; set; }
protected override void Execute(NativeActivityContext context)
{
ScheduleActivity(context);
}
protected override void CacheMetadata(NativeActivityMetadata metadata)
{
base.CacheMetadata(metadata);
metadata.SetChildrenCollection(Activities);
}
private void ScheduleActivity(NativeActivityContext context)
{
// Get next activity
....
context.ScheduleActivity(nextActivity, OnActivityCompleted, OnActivityFaulted);
}
private static void OnActivityFaulted(NativeActivityFaultContext context, Exception exception, ActivityInstance faultedInstance)
{
context.HandleFault();
context.CancelChildren();
}
}