Project Description
The Silverlight Continuation Tasks Library provides a simplification to chain a continuation of asynchronous tasks, on completion, to invoke a second task ... one after another to any arbitrary length. The purpose of this library is to reduce Silverlight code from verbose asynchronous callback event handling.
Quick Samples
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Navigation; using ContinuationTasks; namespace MySilverlightApp1.Views { public partial class MyPage1 : Page { private TaskQueue _DelayReloader; public MyPage1() { InitializeComponent(); _DelayReloader = new TaskQueue(); _DelayReloader.AddTask(() => { domainDataSource1.Load(); }, 100, () => domainDataSource1.CanLoad, 10); _DelayReloader.AddTask(() => { domainDataSource2.Load(); }, 100, () => domainDataSource2.CanLoad, 10); _DelayReloader.AddTask(() => { domainDataSource3.Load(); }, 100, () => domainDataSource3.CanLoad, 10); ... } private void btnApply_Click(object sender, RoutedEventArgs e) { ... _DelayReloader.Start(true); ... } } }
using System; using System.Linq; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Navigation; using ContinuationTasks; using ContinuationTasks.RIA_Client; namespace MySilverlightApp1.Views { public partial class MyPage2 : Page { private ContinuationEntities<MyDomainContext> _ContContext; private ContinuationEntities<MyDomainContext> ContContext { get { if (_ContContext == null) _ContContext = new ContinuationEntities<MyDomainContext> (myDomainContext, 50); return _ContContext; } } private void btnSave_Click(object sender, RoutedEventArgs e) { submittingBusyIndicator.IsBusy = true; ... ContContext.SubmitEntities(myEntityCollection, op => { op.HandleSubmittedError(); }, () => { _DelayReloader.Start(true); submittingBusyIndicator.IsBusy = false; }); ... } } }