13. var data = DownloadData(...);
ProcessData(data);
DownloadDataAsync(... , data => {
ProcessData(data);
});
14. var data = DownloadData(...);
ProcessData(data);
DownloadDataAsync(... , data => {
ProcessData(data);
});
15.
16. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
17. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
18. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
19. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
20. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
21. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
22. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
23. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
24. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
25. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
26. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
27. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
28. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
29. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
30. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
31. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
32. async void DoWorkAsync() {
var t1 = ProcessFeedAsync("www.acme.com/rss");
var t2 = ProcessFeedAsync("www.xyznews.com/rss");
await Task.WhenAll(t1, t2);
DisplayMessage("Done");
} async Task ProcessFeedAsync(string url) {
var text = await DownloadFeedAsync(url);
var doc = ParseFeedIntoDoc(text);
await SaveDocAsync(doc);
ProcessLog.WriteEntry(url);
}
33. async Task<XElement> GetRssAsync(string url) {
var client = new WebClient();
var task = client.DownloadStringTaskAsync(url);
var text = await task;
var xml = XElement.Parse(text);
return xml;
}
34. async Task<XElement> GetRssAsync(string url) {
var client = new WebClient();
var task = client.DownloadStringTaskAsync(url);
var text = await task;
var xml = XElement.Parse(text);
return xml;
} Task<XElement> GetRssAsync(string url) {
var client = new WebClient();
var task = client.DownloadStringTaskAsync(url);
return task.ContinueWith(delegate
{
var text = task.Result;
var xml = XElement.Parse(text);
return xml;
});
}
35.
36. Task<XElement> GetRssAsync(string url) {
var $builder = AsyncTaskMethodBuilder<XElement>.Create();
async Task<XElement> $state = 0;
var
TaskAwaiter<string> $a1;
GetRssAsync(string url) {
Action $resume = delegate {
var client = new try {
WebClient();
var task = if ($state == 1) goto L1;
client.DownloadStringTaskAsync(url);new WebClient();
var client =
var text = await task; task = client.DownloadStringTaskAsync(url);
var
$a1 = task.GetAwaiter();
var xml = XElement.Parse(text);
return xml; if ($a1.IsCompleted) goto L1;
} $state = 1;
$a1.OnCompleted($resume);
return;
L1: var text = $a1.GetResult();
var xml = XElement.Parse(text);
$builder.SetResult(xml);
}
catch (Exception $ex) { $builder.SetException($ex); }
};
$resume();
return $builder.Task;
}
37. Task<XElement> GetRssAsync(string url) {
var $builder = AsyncTaskMethodBuilder<XElement>.Create();
async Task<XElement> $state = 0;
var
TaskAwaiter<string> $a1;
GetRssAsync(string url) {
Action $resume = delegate {
var client = new try {
WebClient();
var task = if ($state == 1) goto L1;
client.DownloadStringTaskAsync(url);new WebClient();
var client =
var text = await task; task = client.DownloadStringTaskAsync(url);
var
$a1 = task.GetAwaiter();
var xml = XElement.Parse(text);
return xml; if ($a1.IsCompleted) goto L1;
} $state = 1;
$a1.OnCompleted($resume);
return;
L1: var text = $a1.GetResult();
var xml = XElement.Parse(text);
$builder.SetResult(xml);
}
catch (Exception $ex) { $builder.SetException($ex); }
};
$resume();
return $builder.Task;
}
38. Task<XElement> GetRssAsync(string url) {
var $builder = AsyncTaskMethodBuilder<XElement>.Create();
async Task<XElement> $state = 0;
var
TaskAwaiter<string> $a1;
GetRssAsync(string url) {
Action $resume = delegate {
var client = new try {
WebClient();
var task = if ($state == 1) goto L1;
client.DownloadStringTaskAsync(url);new WebClient();
var client =
var text = await task; task = client.DownloadStringTaskAsync(url);
var
$a1 = task.GetAwaiter();
var xml = XElement.Parse(text);
return xml; if ($a1.IsCompleted) goto L1;
} $state = 1;
$a1.OnCompleted($resume);
return;
L1: var text = $a1.GetResult();
var xml = XElement.Parse(text);
$builder.SetResult(xml);
}
catch (Exception $ex) { $builder.SetException($ex); }
};
$resume();
return $builder.Task;
}
39. Task<XElement> GetRssAsync(string url) {
var $builder = AsyncTaskMethodBuilder<XElement>.Create();
async Task<XElement> $state = 0;
var
TaskAwaiter<string> $a1;
GetRssAsync(string url) {
Action $resume = delegate {
var client = new try {
WebClient();
var task = if ($state == 1) goto L1;
client.DownloadStringTaskAsync(url);new WebClient();
var client =
var text = await task; task = client.DownloadStringTaskAsync(url);
var
$a1 = task.GetAwaiter();
var xml = XElement.Parse(text);
return xml; if ($a1.IsCompleted) goto L1;
} $state = 1;
$a1.OnCompleted($resume);
return;
L1: var text = $a1.GetResult();
var xml = XElement.Parse(text);
$builder.SetResult(xml);
}
catch (Exception $ex) { $builder.SetException($ex); }
};
$resume();
return $builder.Task;
}
40.
41.
42.
43.
44. var feeds = (from url in urls select client.DownloadFeed(url)).ToArray();
var feeds = await Task.WhenAll(from url in urls select client.DownloadFeedAsync(url));
Sem novas threads!
54. Class
Meta-programação Read-Eval-Print Loop (REPL)
public Foo
Modelo de objetos Field Incorporação de DSLs
da linguagem
private X
string
Código Assembly
Source
Fonte Source
.NET
Source
code Compilador Source
code
code code
59. o 30/Set 17:20, com Fabio Galuppo
o 30/Set 10:10, com Rodrigo Vidal
o 29/Set 17:10, com Victor Cavalcante e Giovanni Bassi
60. Get the free mobile app for your phone
http:/ / gettag.mobi
http://technet.microsoft.com/pt-br
Get the free mobile app for your phone
http:/ / gettag.mobi
http://msdn.microsoft.com/pt-br
61. Não esqueça de
preencher sua avaliação
online
www.teched.com.br/avaliacao
Get the free mobile app for your phone
http:/ / gettag.mobi