RE: Wait for multiple Async calls to finish (SL3)

2009-08-12 Thread Jordan Knight
I had a quick look at this the other day and when I compiled up the reactive 
dll, the classes were different that in the example:

ObservableExtensions
.DoAsync
Didn't exist?

I didn't really examine where I was going wrong in any great depth, so If you 
have any success I'd be interested to hear about it :)


Jordan Knight
Readify | Senior Consultant
Lead Trainer - Rich Interactive Media
Suite 408 LifeLabs Building | 198 Harbour Esplanade | Docklands | VIC 3008 | 
Australia
M: +61 403 532 404 | E: 
jordan.kni...@readify.netmailto:jordan.kni...@readify.net | W: 
http://www.readify.net | B: http://blog.webjak.net




From: ozsilverlight@ozsilverlight.com [mailto:ozsilverli...@ozsilverlight.com] 
On Behalf Of Jake Ginnivan
Sent: Wednesday, 12 August 2009 6:32 PM
To: OzSilverlight@ozsilverlight.com
Subject: RE: Wait for multiple Async calls to finish (SL3)

http://themechanicalbride.blogspot.com/2009/07/introducing-rx-linq-to-events.html

Have a look at this, the Silverlight team use it in their unit testing. I still 
have not used it yet, but really keen to dive in and use this stuff.

Jake Ginnivan
IT Coordinator

ioGlobal Pty Ltd.
ISO 9001 Quality Certified
Resource Analytics  Data Systems Automation
T:  +61 8 6555 6510
F:  +61 8 6311 3256
M:  +61 403 846 400
E:  jake.ginni...@ioglobal.netmailto:jake.ginni...@ioglobal.net
www.ioglobal.nethttp://www.ioglobal.net/

From: OzSilverlight@ozsilverlight.com [mailto:ozsilverli...@ozsilverlight.com] 
On Behalf Of Asheesh Soni
Sent: Wednesday, 12 August 2009 3:49 PM
To: OzSilverlight@ozsilverlight.com
Subject: Wait for multiple Async calls to finish (SL3)

Any one knows a better / cleaner way to do this than:

http://silverlight.net/forums/t/12437.aspx
http://silverlight.net/forums/t/72631.aspx

I have already dumped daisy-chaining of calls in favor of multiple async calls 
with a boolean flag for each.
After calling all the async operations, I am using a DispatcherTimer ticker 
event to poll if all the flags have been set.
Works like a charm, and a huge improvement in performance and readability over 
the chaining. But still not the perfect solution.

I couldn't get this one to work:
http://stackoverflow.com/questions/811855/threading-multiple-async-calls-silverlight
The thread sleeps for ever on the 1st .waitone call.

Any ideas?

Support procedure: https://www.codify.com/lists/support
List address: 
ozsilverlight@ozsilverlight.commailto:ozsilverlight@ozsilverlight.com
Subscribe: 
ozsilverlight-subscr...@ozsilverlight.commailto:ozsilverlight-subscr...@ozsilverlight.com
Unsubscribe: 
ozsilverlight-unsubscr...@ozsilverlight.commailto:ozsilverlight-unsubscr...@ozsilverlight.com
List FAQ: http://www.codify.com/lists/ozsilverlight
Other lists you might want to join: http://www.codify.com/lists

Support procedure: https://www.codify.com/lists/support
List address: 
ozsilverlight@ozsilverlight.commailto:ozsilverlight@ozsilverlight.com
Subscribe: 
ozsilverlight-subscr...@ozsilverlight.commailto:ozsilverlight-subscr...@ozsilverlight.com
Unsubscribe: 
ozsilverlight-unsubscr...@ozsilverlight.commailto:ozsilverlight-unsubscr...@ozsilverlight.com
List FAQ: http://www.codify.com/lists/ozsilverlight
Other lists you might want to join: http://www.codify.com/lists

Support procedure: https://www.codify.com/lists/support
List address: ozsilverlight@ozsilverlight.com
Subscribe: ozsilverlight-subscr...@ozsilverlight.com
Unsubscribe: ozsilverlight-unsubscr...@ozsilverlight.com
List FAQ: http://www.codify.com/lists/ozsilverlight
Other lists you might want to join: http://www.codify.com/lists



Re: Wait for multiple Async calls to finish (SL3)

2009-08-12 Thread Miguel Madero
Ali is going to give a talk on the Rx framework at the next SDDN Event in
Sydney :)

On Wed, Aug 12, 2009 at 7:48 PM, Jordan Knight jordan.kni...@readify.netwrote:

  I had a quick look at this the other day and when I compiled up the
 reactive dll, the classes were different that in the example:



 ObservableExtensions

 DoAsync

 Didn't exist?



 I didn't really examine where I was going wrong in any great depth, so If
 you have any success I'd be interested to hear about it :)





 *Jordan Knight*
 Readify | Senior Consultant
 Lead Trainer - Rich Interactive Media

 Suite 408 LifeLabs Building | 198 Harbour Esplanade | Docklands | VIC 3008
 | Australia

 M: +61 403 532 404 | E: jordan.kni...@readify.net | W:
 http://www.readify.net | B: http://blog.webjak.net









 *From:* ozsilverlight@ozsilverlight.com [mailto:
 ozsilverli...@ozsilverlight.com] *On Behalf Of *Jake Ginnivan

 *Sent:* Wednesday, 12 August 2009 6:32 PM
 *To:* OzSilverlight@ozsilverlight.com
 *Subject:* RE: Wait for multiple Async calls to finish (SL3)




 http://themechanicalbride.blogspot.com/2009/07/introducing-rx-linq-to-events.html



 Have a look at this, the Silverlight team use it in their unit testing. I
 still have not used it yet, but really keen to dive in and use this stuff.



 *Jake Ginnivan*

 IT Coordinator



 ioGlobal Pty Ltd.

 ISO 9001 Quality Certified

 *Resource **Analytics**  Data Systems **Automation***

 T:  +61 8 6555 6510

 F:  +61 8 6311 3256

 M:  +61 403 846 400

 E:  *jake.ginni...@ioglobal.net***

 www.ioglobal.net



 *From:* OzSilverlight@ozsilverlight.com [mailto:
 ozsilverli...@ozsilverlight.com] *On Behalf Of *Asheesh Soni
 *Sent:* Wednesday, 12 August 2009 3:49 PM
 *To:* OzSilverlight@ozsilverlight.com
 *Subject:* Wait for multiple Async calls to finish (SL3)



 Any one knows a better / cleaner way to do this than:

 http://silverlight.net/forums/t/12437.aspx
 http://silverlight.net/forums/t/72631.aspx

 I have already dumped daisy-chaining of calls in favor of multiple async
 calls with a boolean flag for each.
 After calling all the async operations, I am using a DispatcherTimer ticker
 event to poll if all the flags have been set.
 Works like a charm, and a huge improvement in performance and readability
 over the chaining. But still not the perfect solution.

 I couldn't get this one to work:

 http://stackoverflow.com/questions/811855/threading-multiple-async-calls-silverlight
 The thread sleeps for ever on the 1st .waitone call.

 Any ideas?
  --

 Support procedure: https://www.codify.com/lists/support
 List address: ozsilverlight@ozsilverlight.com
 Subscribe: ozsilverlight-subscr...@ozsilverlight.com
 Unsubscribe: ozsilverlight-unsubscr...@ozsilverlight.com
 List FAQ: http://www.codify.com/lists/ozsilverlight
 Other lists you might want to join: http://www.codify.com/lists
  --

 Support procedure: https://www.codify.com/lists/support
 List address: ozsilverlight@ozsilverlight.com
 Subscribe: ozsilverlight-subscr...@ozsilverlight.com
 Unsubscribe: ozsilverlight-unsubscr...@ozsilverlight.com
 List FAQ: http://www.codify.com/lists/ozsilverlight
 Other lists you might want to join: http://www.codify.com/lists
   --
 Support procedure: https://www.codify.com/lists/support
 List address: ozsilverlight@ozsilverlight.com
 Subscribe: ozsilverlight-subscr...@ozsilverlight.com
 Unsubscribe: ozsilverlight-unsubscr...@ozsilverlight.com
 List FAQ: http://www.codify.com/lists/ozsilverlight
 Other lists you might want to join: http://www.codify.com/lists




-- 
Miguel A. Madero Reyes
www.miguelmadero.com (blog)
m...@miguelmadero.com

Support procedure: https://www.codify.com/lists/support
List address: ozsilverlight@ozsilverlight.com
Subscribe: ozsilverlight-subscr...@ozsilverlight.com
Unsubscribe: ozsilverlight-unsubscr...@ozsilverlight.com
List FAQ: http://www.codify.com/lists/ozsilverlight
Other lists you might want to join: http://www.codify.com/lists



Re: Wait for multiple Async calls to finish (SL3)

2009-08-12 Thread Miguel Madero
Attached is a brief example on how to do this using the WaitHandle in the
IAsyncResult returned by each async method.

The code is simple. In Silverlight I just do 10 service call that will add
an item to a ListBox. I'll wait until all the service calls end to add
another message to the list (this has to run in a different thread to avoid
blocking the UI). Also note that adding items to the list have to be done
through the Dispatcher sicne they will modify the UI. There're a bunch of
lamdas, but it's easy to follow.


 public MainPage()
{
InitializeComponent();
var results = new ObservableCollectionstring();
var asyncResults = new ListIAsyncResult();
resultsList.ItemsSource = results;
var service = new Service1Client() as Service1;

1.To(10).Do(i=
asyncResults.Add(service.BeginDoWork(ar =
Dispatcher.BeginInvoke(() =
results.Add(String.Format(Call {0} finished: {1}, i,
service.EndDoWork(ar,
null))
);

new Thread(()=
{
asyncResults.ForEach(a = a.AsyncWaitHandle.WaitOne());
Dispatcher.BeginInvoke(() = results.Add(Everything
finished));
}).Start();
}

Just to help with the testing, this is the service

public class Service1
{
private const int maxMilliSecs = 500;
private const int minMillisSecs = 100;
[OperationContract]
public int DoWork()
{
int millisSecsToWait = new Random().Next(maxMilliSecs -
minMillisSecs) + minMillisSecs;
Thread.Sleep(millisSecsToWait);
return millisSecsToWait;
}
}



On Wed, Aug 12, 2009 at 9:21 PM, Miguel Madero m...@miguelmadero.com wrote:

 Ali is going to give a talk on the Rx framework at the next SDDN Event in
 Sydney :)

 On Wed, Aug 12, 2009 at 7:48 PM, Jordan Knight 
 jordan.kni...@readify.netwrote:

  I had a quick look at this the other day and when I compiled up the
 reactive dll, the classes were different that in the example:



 ObservableExtensions

 DoAsync

 Didn't exist?



 I didn't really examine where I was going wrong in any great depth, so If
 you have any success I'd be interested to hear about it :)





 *Jordan Knight*
 Readify | Senior Consultant
 Lead Trainer - Rich Interactive Media

 Suite 408 LifeLabs Building | 198 Harbour Esplanade | Docklands | VIC 3008
 | Australia

 M: +61 403 532 404 | E: jordan.kni...@readify.net | W:
 http://www.readify.net | B: http://blog.webjak.net









 *From:* ozsilverlight@ozsilverlight.com [mailto:
 ozsilverli...@ozsilverlight.com] *On Behalf Of *Jake Ginnivan

 *Sent:* Wednesday, 12 August 2009 6:32 PM
 *To:* OzSilverlight@ozsilverlight.com
 *Subject:* RE: Wait for multiple Async calls to finish (SL3)




 http://themechanicalbride.blogspot.com/2009/07/introducing-rx-linq-to-events.html



 Have a look at this, the Silverlight team use it in their unit testing. I
 still have not used it yet, but really keen to dive in and use this stuff.



 *Jake Ginnivan*

 IT Coordinator



 ioGlobal Pty Ltd.

 ISO 9001 Quality Certified

 *Resource **Analytics**  Data Systems **Automation***

 T:  +61 8 6555 6510

 F:  +61 8 6311 3256

 M:  +61 403 846 400

 E:  *jake.ginni...@ioglobal.net***

 www.ioglobal.net



 *From:* OzSilverlight@ozsilverlight.com [mailto:
 ozsilverli...@ozsilverlight.com] *On Behalf Of *Asheesh Soni
 *Sent:* Wednesday, 12 August 2009 3:49 PM
 *To:* OzSilverlight@ozsilverlight.com
 *Subject:* Wait for multiple Async calls to finish (SL3)



 Any one knows a better / cleaner way to do this than:

 http://silverlight.net/forums/t/12437.aspx
 http://silverlight.net/forums/t/72631.aspx

 I have already dumped daisy-chaining of calls in favor of multiple async
 calls with a boolean flag for each.
 After calling all the async operations, I am using a DispatcherTimer
 ticker event to poll if all the flags have been set.
 Works like a charm, and a huge improvement in performance and readability
 over the chaining. But still not the perfect solution.

 I couldn't get this one to work:

 http://stackoverflow.com/questions/811855/threading-multiple-async-calls-silverlight
 The thread sleeps for ever on the 1st .waitone call.

 Any ideas?
  --

 Support procedure: https://www.codify.com/lists/support
 List address: ozsilverlight@ozsilverlight.com
 Subscribe: ozsilverlight-subscr...@ozsilverlight.com
 Unsubscribe: ozsilverlight-unsubscr...@ozsilverlight.com
 List FAQ: http://www.codify.com/lists/ozsilverlight
 Other lists you might want to join: http://www.codify.com/lists
  --

 Support procedure: https://www.codify.com/lists/support
 List address: ozsilverlight@ozsilverlight.com
 Subscribe: ozsilverlight-subscr...@ozsilverlight.com
 Unsubscribe: ozsilverlight-unsubscr...@ozsilverlight.com
 List FAQ: http://www.codify.com/lists

Re: Wait for multiple Async calls to finish (SL3)

2009-08-12 Thread Miguel Madero
Asheesh,

I'm comparing the different approaches, the one in StackOverFlow works well,
this is what I don't like:
* I think it's hard to work with multiple services using events instead of
callbacks (as in my example),
* They're using an AutoResetEvent, which we get for free if we use the
callbacks, so that means less things to set up.
* They're using a BackgroundWorker and a Thread
* They're using an event to notify, which is really not necessary (altough a
clear). We could directly do whatever we need after the WaitOne or after
calling Start (instead of raising the event).
* They're starting the BackgroundWorker and leave it there just waiting,
this should be done only just before calling the services.
* The event should be raised on the UI Thread

I did some changes to that sample. I can send it to you as a reference.
I don't think it would make a huge difference in performance, since any perf
hit due to thread synchronization logic would be nothing compare to multiple
service calls. However, I've not had a chance to do any perf testing.


*BTW. *I think you forgot to use the BackgroundWorker and that's why when
you tried to use this approach the application was locked on the first
WaitOne since it was done in the UI Thread (just as the even returning from
the ServiceCall).



On Wed, Aug 12, 2009 at 10:24 PM, Miguel Madero m...@miguelmadero.com wrote:

 Attached is a brief example on how to do this using the WaitHandle in the
 IAsyncResult returned by each async method.

 The code is simple. In Silverlight I just do 10 service call that will add
 an item to a ListBox. I'll wait until all the service calls end to add
 another message to the list (this has to run in a different thread to avoid
 blocking the UI). Also note that adding items to the list have to be done
 through the Dispatcher sicne they will modify the UI. There're a bunch of
 lamdas, but it's easy to follow.


  public MainPage()
 {
 InitializeComponent();
 var results = new ObservableCollectionstring();
 var asyncResults = new ListIAsyncResult();
 resultsList.ItemsSource = results;
 var service = new Service1Client() as Service1;

 1.To(10).Do(i=
 asyncResults.Add(service.BeginDoWork(ar =
 Dispatcher.BeginInvoke(() =
 results.Add(String.Format(Call {0} finished: {1}, i,
 service.EndDoWork(ar,
 null))
 );

 new Thread(()=
 {
 asyncResults.ForEach(a = a.AsyncWaitHandle.WaitOne());
 Dispatcher.BeginInvoke(() = results.Add(Everything
 finished));
 }).Start();
 }

 Just to help with the testing, this is the service

 public class Service1
 {
 private const int maxMilliSecs = 500;
 private const int minMillisSecs = 100;
 [OperationContract]
 public int DoWork()
 {
 int millisSecsToWait = new Random().Next(maxMilliSecs -
 minMillisSecs) + minMillisSecs;
 Thread.Sleep(millisSecsToWait);
 return millisSecsToWait;
 }
 }



 On Wed, Aug 12, 2009 at 9:21 PM, Miguel Madero m...@miguelmadero.comwrote:

 Ali is going to give a talk on the Rx framework at the next SDDN Event in
 Sydney :)

 On Wed, Aug 12, 2009 at 7:48 PM, Jordan Knight jordan.kni...@readify.net
  wrote:

  I had a quick look at this the other day and when I compiled up the
 reactive dll, the classes were different that in the example:



 ObservableExtensions

 DoAsync

 Didn't exist?



 I didn't really examine where I was going wrong in any great depth, so If
 you have any success I'd be interested to hear about it :)





 *Jordan Knight*
 Readify | Senior Consultant
 Lead Trainer - Rich Interactive Media

 Suite 408 LifeLabs Building | 198 Harbour Esplanade | Docklands | VIC
 3008 | Australia

 M: +61 403 532 404 | E: jordan.kni...@readify.net | W:
 http://www.readify.net | B: http://blog.webjak.net









 *From:* ozsilverlight@ozsilverlight.com [mailto:
 ozsilverli...@ozsilverlight.com] *On Behalf Of *Jake Ginnivan

 *Sent:* Wednesday, 12 August 2009 6:32 PM
 *To:* OzSilverlight@ozsilverlight.com
 *Subject:* RE: Wait for multiple Async calls to finish (SL3)




 http://themechanicalbride.blogspot.com/2009/07/introducing-rx-linq-to-events.html



 Have a look at this, the Silverlight team use it in their unit testing. I
 still have not used it yet, but really keen to dive in and use this stuff.



 *Jake Ginnivan*

 IT Coordinator



 ioGlobal Pty Ltd.

 ISO 9001 Quality Certified

 *Resource **Analytics**  Data Systems **Automation***

 T:  +61 8 6555 6510

 F:  +61 8 6311 3256

 M:  +61 403 846 400

 E:  *jake.ginni...@ioglobal.net***

 www.ioglobal.net



 *From:* OzSilverlight@ozsilverlight.com [mailto:
 ozsilverli...@ozsilverlight.com] *On Behalf Of *Asheesh Soni
 *Sent:* Wednesday, 12 August 2009 3:49 PM
 *To:* OzSilverlight@ozsilverlight.com

Re: Wait for multiple Async calls to finish (SL3)

2009-08-12 Thread Miguel Madero
Ross,

You're totally right, altough isn't as fun, that'll definitely perfom better
and should be the first option. I let myself go straight to VS to hack some
code and completely overlooked this.



On Wed, Aug 12, 2009 at 11:35 PM, Ross Jempson 
ross.jemp...@michaelhill.com.au wrote:

  Whilst the synchronising discussion is interesting in itself, perhaps the
 original problem could be solved by batching your logically grouped
 operations.  Assuming you ‘own’ the services, you could create less granular
 methods which return aggregated ‘datacontracts’.



 A variation of this idea is implemented quite nicely in ADO.NET data
 services, by supplying multiple DataServiceRequest to
 DataServiceContext.BeginExecuteBatch you get better performance and don’t
 have to synchronise the callbacks.



  (I’m only using that as an example by the way, as you can’t call custom
 service methods within a batch within that framework.)



 *From:* Miguel Madero [mailto:m...@miguelmadero.com]
 *Sent:* Wednesday, 12 August 2009 11:04 PM
 *To:* ozsilverlight@ozsilverlight.com
 *Subject:* Re: Wait for multiple Async calls to finish (SL3)



 Asheesh,

 I'm comparing the different approaches, the one in StackOverFlow works
 well, this is what I don't like:
 * I think it's hard to work with multiple services using events instead of
 callbacks (as in my example),
 * They're using an AutoResetEvent, which we get for free if we use the
 callbacks, so that means less things to set up.
 * They're using a BackgroundWorker and a Thread
 * They're using an event to notify, which is really not necessary (altough
 a clear). We could directly do whatever we need after the WaitOne or after
 calling Start (instead of raising the event).
 * They're starting the BackgroundWorker and leave it there just waiting,
 this should be done only just before calling the services.
 * The event should be raised on the UI Thread

 I did some changes to that sample. I can send it to you as a reference.
 I don't think it would make a huge difference in performance, since any
 perf hit due to thread synchronization logic would be nothing compare to
 multiple service calls. However, I've not had a chance to do any perf
 testing.


 *BTW. *I think you forgot to use the BackgroundWorker and that's why when
 you tried to use this approach the application was locked on the first
 WaitOne since it was done in the UI Thread (just as the even returning from
 the ServiceCall).


  On Wed, Aug 12, 2009 at 10:24 PM, Miguel Madero m...@miguelmadero.com
 wrote:

 Attached is a brief example on how to do this using the WaitHandle in the
 IAsyncResult returned by each async method.

 The code is simple. In Silverlight I just do 10 service call that will add
 an item to a ListBox. I'll wait until all the service calls end to add
 another message to the list (this has to run in a different thread to avoid
 blocking the UI). Also note that adding items to the list have to be done
 through the Dispatcher sicne they will modify the UI. There're a bunch of
 lamdas, but it's easy to follow.


  public MainPage()
 {
 InitializeComponent();
 var results = new ObservableCollectionstring();
 var asyncResults = new ListIAsyncResult();
 resultsList.ItemsSource = results;
 var service = new Service1Client() as Service1;

 1.To(10).Do(i=
 asyncResults.Add(service.BeginDoWork(ar =
 Dispatcher.BeginInvoke(() =
 results.Add(String.Format(Call {0} finished: {1}, i,
 service.EndDoWork(ar,
 null))
 );

 new Thread(()=
 {
 asyncResults.ForEach(a = a.AsyncWaitHandle.WaitOne());
 Dispatcher.BeginInvoke(() = results.Add(Everything
 finished));
 }).Start();
 }

 Just to help with the testing, this is the service

 public class Service1
 {
 private const int maxMilliSecs = 500;
 private const int minMillisSecs = 100;
 [OperationContract]
 public int DoWork()
 {
 int millisSecsToWait = new Random().Next(maxMilliSecs -
 minMillisSecs) + minMillisSecs;
 Thread.Sleep(millisSecsToWait);
 return millisSecsToWait;
 }
 }


On Wed, Aug 12, 2009 at 9:21 PM, Miguel Madero m...@miguelmadero.com
 wrote:

  Ali is going to give a talk on the Rx framework at the next SDDN Event in
 Sydney :)

 On Wed, Aug 12, 2009 at 7:48 PM, Jordan Knight jordan.kni...@readify.net
 wrote:

  I had a quick look at this the other day and when I compiled up the
 reactive dll, the classes were different that in the example:



 ObservableExtensions

 DoAsync

 Didn't exist?



 I didn't really examine where I was going wrong in any great depth, so If
 you have any success I'd be interested to hear about it :)





 *Jordan Knight*
 Readify | Senior Consultant
 Lead Trainer - Rich Interactive Media

 Suite

Re: Wait for multiple Async calls to finish (SL3)

2009-08-12 Thread Asheesh Soni
Thanks Miguel, Jake and others.

You are right... I forgot to use BackgroundWorker... :p

On Wed, Aug 12, 2009 at 11:04 PM, Miguel Madero m...@miguelmadero.com wrote:

 Asheesh,

 I'm comparing the different approaches, the one in StackOverFlow works
 well, this is what I don't like:
 * I think it's hard to work with multiple services using events instead of
 callbacks (as in my example),
 * They're using an AutoResetEvent, which we get for free if we use the
 callbacks, so that means less things to set up.
 * They're using a BackgroundWorker and a Thread
 * They're using an event to notify, which is really not necessary (altough
 a clear). We could directly do whatever we need after the WaitOne or after
 calling Start (instead of raising the event).
 * They're starting the BackgroundWorker and leave it there just waiting,
 this should be done only just before calling the services.
 * The event should be raised on the UI Thread

 I did some changes to that sample. I can send it to you as a reference.
 I don't think it would make a huge difference in performance, since any
 perf hit due to thread synchronization logic would be nothing compare to
 multiple service calls. However, I've not had a chance to do any perf
 testing.


 *BTW. *I think you forgot to use the BackgroundWorker and that's why when
 you tried to use this approach the application was locked on the first
 WaitOne since it was done in the UI Thread (just as the even returning from
 the ServiceCall).



 On Wed, Aug 12, 2009 at 10:24 PM, Miguel Madero m...@miguelmadero.comwrote:

 Attached is a brief example on how to do this using the WaitHandle in the
 IAsyncResult returned by each async method.

 The code is simple. In Silverlight I just do 10 service call that will add
 an item to a ListBox. I'll wait until all the service calls end to add
 another message to the list (this has to run in a different thread to avoid
 blocking the UI). Also note that adding items to the list have to be done
 through the Dispatcher sicne they will modify the UI. There're a bunch of
 lamdas, but it's easy to follow.


  public MainPage()
 {
 InitializeComponent();
 var results = new ObservableCollectionstring();
 var asyncResults = new ListIAsyncResult();
 resultsList.ItemsSource = results;
 var service = new Service1Client() as Service1;

 1.To(10).Do(i=
 asyncResults.Add(service.BeginDoWork(ar =
 Dispatcher.BeginInvoke(() =
 results.Add(String.Format(Call {0} finished: {1}, i,
 service.EndDoWork(ar,
 null))
 );

 new Thread(()=
 {
 asyncResults.ForEach(a = a.AsyncWaitHandle.WaitOne());
 Dispatcher.BeginInvoke(() = results.Add(Everything
 finished));
 }).Start();
 }

 Just to help with the testing, this is the service

 public class Service1
 {
 private const int maxMilliSecs = 500;
 private const int minMillisSecs = 100;
 [OperationContract]
 public int DoWork()
 {
 int millisSecsToWait = new Random().Next(maxMilliSecs -
 minMillisSecs) + minMillisSecs;
 Thread.Sleep(millisSecsToWait);
 return millisSecsToWait;
 }
 }



 On Wed, Aug 12, 2009 at 9:21 PM, Miguel Madero m...@miguelmadero.comwrote:

 Ali is going to give a talk on the Rx framework at the next SDDN Event in
 Sydney :)

 On Wed, Aug 12, 2009 at 7:48 PM, Jordan Knight 
 jordan.kni...@readify.net wrote:

  I had a quick look at this the other day and when I compiled up the
 reactive dll, the classes were different that in the example:



 ObservableExtensions

 DoAsync

 Didn't exist?



 I didn't really examine where I was going wrong in any great depth, so
 If you have any success I'd be interested to hear about it :)





 *Jordan Knight*
 Readify | Senior Consultant
 Lead Trainer - Rich Interactive Media

 Suite 408 LifeLabs Building | 198 Harbour Esplanade | Docklands | VIC
 3008 | Australia

 M: +61 403 532 404 | E: jordan.kni...@readify.net | W:
 http://www.readify.net | B: http://blog.webjak.net









 *From:* ozsilverlight@ozsilverlight.com [mailto:
 ozsilverli...@ozsilverlight.com] *On Behalf Of *Jake Ginnivan

 *Sent:* Wednesday, 12 August 2009 6:32 PM
 *To:* OzSilverlight@ozsilverlight.com
 *Subject:* RE: Wait for multiple Async calls to finish (SL3)




 http://themechanicalbride.blogspot.com/2009/07/introducing-rx-linq-to-events.html



 Have a look at this, the Silverlight team use it in their unit testing.
 I still have not used it yet, but really keen to dive in and use this 
 stuff.



 *Jake Ginnivan*

 IT Coordinator



 ioGlobal Pty Ltd.

 ISO 9001 Quality Certified

 *Resource **Analytics**  Data Systems **Automation***

 T:  +61 8 6555 6510

 F:  +61 8 6311 3256

 M:  +61 403 846 400

 E:  *jake.ginni...@ioglobal.net***

 www.ioglobal.net



 *From