Async CSLA Calls -
the 'standard' csla async server calls have typically been structured per following:
base class:
public static void getmyobject(eventhandler<dataportalresult<myobject>> callback) { var dp = new dataportal<myobject>(); dp.fetchcompleted += callback; dp.beginfetch(); }
viewmodel:
protected override void oninitialize(object parameter) { base.oninitialize(parameter); base.isbusy = true; myobject.getmyobject((o, e) => { if (hasnoexception(e)) { model = e.object; } base.isbusy = false; }); }
with new async/await features, format this:
public async static task<myobject> getmyobject() { return await dataportal.fetchasync<myobject>(); }
and
protected async override void oninitialize(object parameter) { base.oninitialize(parameter); base.isbusy = true; model = await myobject.getmyobjectasync(); base.isbusy = false; }
should callback pattern considered deprecated @ point, or still useful ui technologies? when doing new project, i'd rather not have methods in there if can it.
personally, prefer tap methods on callbacks in code.
with microsoft.bcl.async
, platforms support async
. however, there few situations neither tap nor task
available, e.g., windows phone 7.0, .net cf, sl 3. use callbacks if had support 1 of platforms.
Comments
Post a Comment