c# 4.0 - Asynchronous Task controllers in C#4 -
i want write asynchronous controller displaying in output ienumerable<ienumerable<video>>
i don't know can manage write correctly function task<ienumerable<ienumerable<video>>> getvideosasync(xxxxx)
task.continuewhenall function (in order not have blocking code ). improve utilize lambda piece of code ...?
nb: *i can utilize c#4 , visual studio 2010
public class homecontroller : asynccontroller { string[] sources = { "http://xxxx/membervideos/1", "http://xxxx/membervideos/2" }; public task<actionresult> async() { var sw = stopwatch.startnew(); var info = getvideosasync(); sw.stop(); viewbag.elapsed = sw.elapsedmilliseconds; homecoming view("~/views/home/index.cshtml", data); } task<ienumerable<ienumerable<video>>> getvideosasync() { var allvideostasks = new list<task<ienumerable<video>>>(); foreach (var url in sources) { allvideostasks.add(downloaddataasync(url)); } var context = taskscheduler.fromcurrentsynchronizationcontext(); task.factory.continuewhenall<ienumerable<video>,ienumerable<ienumerable<video>>( /// code finish here ); task<ienumerable<video>> downloaddataasync(string url) { var httpclient = new httpclient(); var httpresponsemessage = httpclient.getasync(url); var result = httpresponsemessage.continuewith (t => { t.result.ensuresuccessstatuscode(); homecoming t.result.content.readasasync<ienumerable<video>>(); } ).unwrap(); homecoming result; } /**** view ******/ @{ viewbag.title = "home page"; } @model ienumerable<ienumerable<mvcapplication1.models.video>> <table> @foreach (var membervideos in model) { <tr> @foreach(var video in membervideos){ <td> <div>@video.title</div> <div><img src="http://xxxxxx/membervideos/@video.imageurl" style="width: 185px;"/> </div> </td> } </tr> } </table> <h1>@viewbag.elapsed</h1>
c#-4.0 asynchronous
No comments:
Post a Comment