SlideShare ist ein Scribd-Unternehmen logo
1 von 63
@GiovanniBassi

                 3
C# 4.0 + VB 10.0
                                      Dinamismo + paridade nas
                                      linguagens
         C# 3.0 + VB 9.0
                                Language Integrated Query

    C# 2.0 + VB 8.0
                           Generics

C# 1.0 + VB 7.0
                      Código gerenciado
C# 5.0 + VB 11.0
                                          Programação assíncrona

             C# 4.0 + VB 10.0
                                      Dinamismo + paridade nas
                                      linguagens
         C# 3.0 + VB 9.0
                                Language Integrated Query

    C# 2.0 + VB 8.0
                           Generics

C# 1.0 + VB 7.0
                      Código gerenciado
var data = DownloadData(...);
ProcessData(data);




DownloadDataAsync(... , data => {
    ProcessData(data);
});
var data = DownloadData(...);
ProcessData(data);




DownloadDataAsync(... , data => {
    ProcessData(data);
});
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);
                                }
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);
                                }
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);
                                }
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);
                                }
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);
                                }
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);
                                }
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);
                                }
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);
                                }




              
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);
                                }




              
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);
                                }




                            
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);
                                }




                            
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);
                                }



            



                            
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);
                                }



            



                           
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);
                                }



            



                                               
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);
                                }



         



                                               
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);
                                }



          



                                               
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);
                                }



          



                                               
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;
}
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;
                         });
                     }
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;
              }
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;
              }
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;
              }
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;
              }
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!
try {
    string[] videoUrls = await ScrapeYoutubeAsync(url);    // Rede
    Task<Video> t1 = DownloadVideoAsync(videoUrls[0]);     // Baixe 2 videos
    Task<Video> t2 = DownloadVideoAsync(videoUrls[1]);
    Video[] vids = await Task.WhenAll(t1, t2);             // Espere os 2
    Video v = await MashupVideosAsync(vids[0], vids[1]);   // CPU
    await v.SaveAsync(textbox.Text);                       // Entrada/Saída
}
catch (WebException ex) {
    ReportError(ex);
}











public static class Trace
{
    public static void WriteLine(string message,
        [CallerFilePath] string file = "",
        [CallerLineNumber] int line = 0,
        [CallerMemberName] string member = "")
    {
        var s = string.Format("{0}:{1} – {2}: {3}",
               file, line, member, message);
        Console.WriteLine(s);
    }
}
Trace.WriteLine("Starting services");




      Trace.WriteLine("Starting services",
             "c:sourcesfoo.cs", 1123, "Initialize");
public static class Trace
{
    public static void WriteLine(string message,
        [CallerFilePath] string file = "",
        [CallerLineNumber] int line = 0,
        [CallerMemberName] string member = "")
    {
        var s = string.Format("{0}:{1} – {2}: {3}",
               file, line, member, message);
        Console.WriteLine(s);
    }
}
Trace.WriteLine("Starting services");




      Trace.WriteLine("Starting services",
             "c:sourcesfoo.cs", 1123, "Initialize");
C# 5.0 + VB 11.0
                                          Programação assíncrona

             C# 4.0 + VB 10.0
                                      Dinamismo + paridade nas
                                      linguagens
         C# 3.0 + VB 9.0
                                Language Integrated Query

    C# 2.0 + VB 8.0
                           Generics

C# 1.0 + VB 7.0
                      Código gerenciado
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
Language
  Service




Compiler
   APIs



Compiler
 Pipeline   Metadata
             Import
http://msdn.com/vstudio/async
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
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
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
C# e Visual Basic Future: Async Made Simple (DEV304)
C# e Visual Basic Future: Async Made Simple (DEV304)

Weitere ähnliche Inhalte

Was ist angesagt?

Make BDD great again
Make BDD great againMake BDD great again
Make BDD great againYana Gusti
 
Introduction to Node js for beginners + game project
Introduction to Node js for beginners + game projectIntroduction to Node js for beginners + game project
Introduction to Node js for beginners + game projectLaurence Svekis ✔
 
.NET @ apache.org
 .NET @ apache.org .NET @ apache.org
.NET @ apache.orgTed Husted
 
Like loggly using open source
Like loggly using open sourceLike loggly using open source
Like loggly using open sourceThomas Alrin
 
Web program-peformance-optimization
Web program-peformance-optimizationWeb program-peformance-optimization
Web program-peformance-optimizationxiaojueqq12345
 
Relayd: a load balancer for OpenBSD
Relayd: a load balancer for OpenBSD Relayd: a load balancer for OpenBSD
Relayd: a load balancer for OpenBSD Giovanni Bechis
 
Networking and Go: An Engineer's Journey (Strangeloop 2019)
Networking and Go: An Engineer's Journey (Strangeloop 2019)Networking and Go: An Engineer's Journey (Strangeloop 2019)
Networking and Go: An Engineer's Journey (Strangeloop 2019)Sneha Inguva
 
Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana
Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et KibanaJournée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana
Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et KibanaPublicis Sapient Engineering
 
Managing Your Security Logs with Elasticsearch
Managing Your Security Logs with ElasticsearchManaging Your Security Logs with Elasticsearch
Managing Your Security Logs with ElasticsearchVic Hargrave
 
Containers: What are they, Really?
Containers: What are they, Really?Containers: What are they, Really?
Containers: What are they, Really?Sneha Inguva
 
Logstash family introduction
Logstash family introductionLogstash family introduction
Logstash family introductionOwen Wu
 
Mobile Programming - 3 UDP
Mobile Programming - 3 UDPMobile Programming - 3 UDP
Mobile Programming - 3 UDPRiza Fahmi
 
swift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClientswift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClientShinya Mochida
 
ELK stack at weibo.com
ELK stack at weibo.comELK stack at weibo.com
ELK stack at weibo.com琛琳 饶
 
Introduction to redis - version 2
Introduction to redis - version 2Introduction to redis - version 2
Introduction to redis - version 2Dvir Volk
 
From zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and ElasticsearchFrom zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and ElasticsearchRafał Kuć
 

Was ist angesagt? (17)

Make BDD great again
Make BDD great againMake BDD great again
Make BDD great again
 
Introduction to Node js for beginners + game project
Introduction to Node js for beginners + game projectIntroduction to Node js for beginners + game project
Introduction to Node js for beginners + game project
 
Node.js cluster
Node.js clusterNode.js cluster
Node.js cluster
 
.NET @ apache.org
 .NET @ apache.org .NET @ apache.org
.NET @ apache.org
 
Like loggly using open source
Like loggly using open sourceLike loggly using open source
Like loggly using open source
 
Web program-peformance-optimization
Web program-peformance-optimizationWeb program-peformance-optimization
Web program-peformance-optimization
 
Relayd: a load balancer for OpenBSD
Relayd: a load balancer for OpenBSD Relayd: a load balancer for OpenBSD
Relayd: a load balancer for OpenBSD
 
Networking and Go: An Engineer's Journey (Strangeloop 2019)
Networking and Go: An Engineer's Journey (Strangeloop 2019)Networking and Go: An Engineer's Journey (Strangeloop 2019)
Networking and Go: An Engineer's Journey (Strangeloop 2019)
 
Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana
Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et KibanaJournée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana
Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana
 
Managing Your Security Logs with Elasticsearch
Managing Your Security Logs with ElasticsearchManaging Your Security Logs with Elasticsearch
Managing Your Security Logs with Elasticsearch
 
Containers: What are they, Really?
Containers: What are they, Really?Containers: What are they, Really?
Containers: What are they, Really?
 
Logstash family introduction
Logstash family introductionLogstash family introduction
Logstash family introduction
 
Mobile Programming - 3 UDP
Mobile Programming - 3 UDPMobile Programming - 3 UDP
Mobile Programming - 3 UDP
 
swift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClientswift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClient
 
ELK stack at weibo.com
ELK stack at weibo.comELK stack at weibo.com
ELK stack at weibo.com
 
Introduction to redis - version 2
Introduction to redis - version 2Introduction to redis - version 2
Introduction to redis - version 2
 
From zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and ElasticsearchFrom zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and Elasticsearch
 

Andere mochten auch

viaprinto Motivkalender 2014 - Mit Ihrem Gratis-Werbeeindruck
viaprinto Motivkalender 2014 - Mit Ihrem Gratis-Werbeeindruckviaprinto Motivkalender 2014 - Mit Ihrem Gratis-Werbeeindruck
viaprinto Motivkalender 2014 - Mit Ihrem Gratis-Werbeeindruckviaprinto
 
OEB12: Enhancing participatory culture: iCollab pre-conference workshop
OEB12: Enhancing participatory culture: iCollab pre-conference workshopOEB12: Enhancing participatory culture: iCollab pre-conference workshop
OEB12: Enhancing participatory culture: iCollab pre-conference workshopIlona Buchem
 
General Resume 8-19-16
General Resume 8-19-16General Resume 8-19-16
General Resume 8-19-16Nathan Bond
 
FORMACIÓN DE LOS ARCHIVOS SEGÚN EL CICLO VITAL DE LOS DOCUMENTOS
FORMACIÓN DE LOS ARCHIVOS SEGÚN EL CICLO VITAL DE LOS DOCUMENTOSFORMACIÓN DE LOS ARCHIVOS SEGÚN EL CICLO VITAL DE LOS DOCUMENTOS
FORMACIÓN DE LOS ARCHIVOS SEGÚN EL CICLO VITAL DE LOS DOCUMENTOSMartha Lucia Taborda Caro
 
ATHI RIVER RFC jamii telekom sponsorship
ATHI RIVER RFC jamii telekom sponsorshipATHI RIVER RFC jamii telekom sponsorship
ATHI RIVER RFC jamii telekom sponsorshipohweeeezy
 
Casas patrimoniales - barrio orellana
Casas patrimoniales - barrio orellanaCasas patrimoniales - barrio orellana
Casas patrimoniales - barrio orellanaEmilia Vásquez
 
NetTask Lync Roadshow - Microsoft Cloud Strategy - Peter Gröpper
NetTask Lync Roadshow - Microsoft Cloud Strategy - Peter GröpperNetTask Lync Roadshow - Microsoft Cloud Strategy - Peter Gröpper
NetTask Lync Roadshow - Microsoft Cloud Strategy - Peter GröpperNetTask GmbH
 
Metodología de la evaluación de las formaciones en Francia: criterios, refere...
Metodología de la evaluación de las formaciones en Francia: criterios, refere...Metodología de la evaluación de las formaciones en Francia: criterios, refere...
Metodología de la evaluación de las formaciones en Francia: criterios, refere...Consejo de Rectores de Panamá
 
The Commodity Crunch: Value at Risk from Deforestation
The Commodity Crunch: Value at Risk from DeforestationThe Commodity Crunch: Value at Risk from Deforestation
The Commodity Crunch: Value at Risk from DeforestationSustainable Brands
 
A stronger wffp eng
A stronger wffp engA stronger wffp eng
A stronger wffp engNAFSO
 
Propuesta corporativa split billin (1)
Propuesta corporativa split billin (1)Propuesta corporativa split billin (1)
Propuesta corporativa split billin (1)Hef Kardona
 
Implementering Fronter Högasten RååSödra, JonasHogasten
Implementering Fronter Högasten RååSödra, JonasHogastenImplementering Fronter Högasten RååSödra, JonasHogasten
Implementering Fronter Högasten RååSödra, JonasHogastenjonashogasten
 
Jan Mag 2010 Final
Jan Mag 2010 FinalJan Mag 2010 Final
Jan Mag 2010 Finalkarlw78
 

Andere mochten auch (20)

viaprinto Motivkalender 2014 - Mit Ihrem Gratis-Werbeeindruck
viaprinto Motivkalender 2014 - Mit Ihrem Gratis-Werbeeindruckviaprinto Motivkalender 2014 - Mit Ihrem Gratis-Werbeeindruck
viaprinto Motivkalender 2014 - Mit Ihrem Gratis-Werbeeindruck
 
OEB12: Enhancing participatory culture: iCollab pre-conference workshop
OEB12: Enhancing participatory culture: iCollab pre-conference workshopOEB12: Enhancing participatory culture: iCollab pre-conference workshop
OEB12: Enhancing participatory culture: iCollab pre-conference workshop
 
General Resume 8-19-16
General Resume 8-19-16General Resume 8-19-16
General Resume 8-19-16
 
FORMACIÓN DE LOS ARCHIVOS SEGÚN EL CICLO VITAL DE LOS DOCUMENTOS
FORMACIÓN DE LOS ARCHIVOS SEGÚN EL CICLO VITAL DE LOS DOCUMENTOSFORMACIÓN DE LOS ARCHIVOS SEGÚN EL CICLO VITAL DE LOS DOCUMENTOS
FORMACIÓN DE LOS ARCHIVOS SEGÚN EL CICLO VITAL DE LOS DOCUMENTOS
 
ATHI RIVER RFC jamii telekom sponsorship
ATHI RIVER RFC jamii telekom sponsorshipATHI RIVER RFC jamii telekom sponsorship
ATHI RIVER RFC jamii telekom sponsorship
 
Sharepointtest
SharepointtestSharepointtest
Sharepointtest
 
Casas patrimoniales - barrio orellana
Casas patrimoniales - barrio orellanaCasas patrimoniales - barrio orellana
Casas patrimoniales - barrio orellana
 
NetTask Lync Roadshow - Microsoft Cloud Strategy - Peter Gröpper
NetTask Lync Roadshow - Microsoft Cloud Strategy - Peter GröpperNetTask Lync Roadshow - Microsoft Cloud Strategy - Peter Gröpper
NetTask Lync Roadshow - Microsoft Cloud Strategy - Peter Gröpper
 
Tema 5. dinamica_de_la_geosfera__0
Tema 5. dinamica_de_la_geosfera__0Tema 5. dinamica_de_la_geosfera__0
Tema 5. dinamica_de_la_geosfera__0
 
Mc aese
Mc aese Mc aese
Mc aese
 
Metodología de la evaluación de las formaciones en Francia: criterios, refere...
Metodología de la evaluación de las formaciones en Francia: criterios, refere...Metodología de la evaluación de las formaciones en Francia: criterios, refere...
Metodología de la evaluación de las formaciones en Francia: criterios, refere...
 
The Commodity Crunch: Value at Risk from Deforestation
The Commodity Crunch: Value at Risk from DeforestationThe Commodity Crunch: Value at Risk from Deforestation
The Commodity Crunch: Value at Risk from Deforestation
 
Bd euregio en
Bd euregio enBd euregio en
Bd euregio en
 
San anton 2014
San anton 2014San anton 2014
San anton 2014
 
A stronger wffp eng
A stronger wffp engA stronger wffp eng
A stronger wffp eng
 
Presentation1
Presentation1Presentation1
Presentation1
 
Propuesta corporativa split billin (1)
Propuesta corporativa split billin (1)Propuesta corporativa split billin (1)
Propuesta corporativa split billin (1)
 
Ascoltare con itelligenza
Ascoltare con itelligenzaAscoltare con itelligenza
Ascoltare con itelligenza
 
Implementering Fronter Högasten RååSödra, JonasHogasten
Implementering Fronter Högasten RååSödra, JonasHogastenImplementering Fronter Högasten RååSödra, JonasHogasten
Implementering Fronter Högasten RååSödra, JonasHogasten
 
Jan Mag 2010 Final
Jan Mag 2010 FinalJan Mag 2010 Final
Jan Mag 2010 Final
 

Ähnlich wie C# e Visual Basic Future: Async Made Simple (DEV304)

Asynchronous Programming in ASP.NET
Asynchronous Programming in ASP.NETAsynchronous Programming in ASP.NET
Asynchronous Programming in ASP.NETChris Dufour
 
The Evolution of Async-Programming on .NET Platform (TUP, Full)
The Evolution of Async-Programming on .NET Platform (TUP, Full)The Evolution of Async-Programming on .NET Platform (TUP, Full)
The Evolution of Async-Programming on .NET Platform (TUP, Full)jeffz
 
Asynchronní programování
Asynchronní programováníAsynchronní programování
Asynchronní programováníPeckaDesign.cz
 
Concurrency - responsiveness in .NET
Concurrency - responsiveness in .NETConcurrency - responsiveness in .NET
Concurrency - responsiveness in .NETMårten Rånge
 
Workshop: Async and Parallel in C#
Workshop: Async and Parallel in C#Workshop: Async and Parallel in C#
Workshop: Async and Parallel in C#Rainer Stropek
 
Windows Phone 8 - 3.5 Async Programming
Windows Phone 8 - 3.5 Async ProgrammingWindows Phone 8 - 3.5 Async Programming
Windows Phone 8 - 3.5 Async ProgrammingOliver Scheer
 
Async Development con Visual Studio 2012
Async Development con Visual Studio 2012Async Development con Visual Studio 2012
Async Development con Visual Studio 2012Raffaele Fanizzi
 
WebTalk - Implementing Web Services with a dedicated Java daemon
WebTalk - Implementing Web Services with a dedicated Java daemonWebTalk - Implementing Web Services with a dedicated Java daemon
WebTalk - Implementing Web Services with a dedicated Java daemonGeert Van Pamel
 
Introduction to the New Asynchronous API in the .NET Driver
Introduction to the New Asynchronous API in the .NET DriverIntroduction to the New Asynchronous API in the .NET Driver
Introduction to the New Asynchronous API in the .NET DriverMongoDB
 
Introduction to Ajax programming
Introduction to Ajax programmingIntroduction to Ajax programming
Introduction to Ajax programmingFulvio Corno
 
Correcting Common Async/Await Mistakes in .NET
Correcting Common Async/Await Mistakes in .NETCorrecting Common Async/Await Mistakes in .NET
Correcting Common Async/Await Mistakes in .NETBrandon Minnick, MBA
 
Binary Studio Academy: Concurrency in C# 5.0
Binary Studio Academy: Concurrency in C# 5.0Binary Studio Academy: Concurrency in C# 5.0
Binary Studio Academy: Concurrency in C# 5.0Binary Studio
 
동기화 시대를 뛰어넘는 비동기 프로그래밍
동기화 시대를 뛰어넘는 비동기 프로그래밍동기화 시대를 뛰어넘는 비동기 프로그래밍
동기화 시대를 뛰어넘는 비동기 프로그래밍명신 김
 
Android Studio Assignment HelpCan someone who is familiar with And.pdf
Android Studio Assignment HelpCan someone who is familiar with And.pdfAndroid Studio Assignment HelpCan someone who is familiar with And.pdf
Android Studio Assignment HelpCan someone who is familiar with And.pdffeelinggift
 
Getting Started with Real-Time Analytics
Getting Started with Real-Time AnalyticsGetting Started with Real-Time Analytics
Getting Started with Real-Time AnalyticsAmazon Web Services
 

Ähnlich wie C# e Visual Basic Future: Async Made Simple (DEV304) (20)

Welcome to an asynchronous world 1.29s
Welcome to an asynchronous world 1.29sWelcome to an asynchronous world 1.29s
Welcome to an asynchronous world 1.29s
 
Asynchronous Programming in ASP.NET
Asynchronous Programming in ASP.NETAsynchronous Programming in ASP.NET
Asynchronous Programming in ASP.NET
 
The Evolution of Async-Programming on .NET Platform (TUP, Full)
The Evolution of Async-Programming on .NET Platform (TUP, Full)The Evolution of Async-Programming on .NET Platform (TUP, Full)
The Evolution of Async-Programming on .NET Platform (TUP, Full)
 
Asynchronní programování
Asynchronní programováníAsynchronní programování
Asynchronní programování
 
Concurrency - responsiveness in .NET
Concurrency - responsiveness in .NETConcurrency - responsiveness in .NET
Concurrency - responsiveness in .NET
 
Workshop: Async and Parallel in C#
Workshop: Async and Parallel in C#Workshop: Async and Parallel in C#
Workshop: Async and Parallel in C#
 
Windows Phone 8 - 3.5 Async Programming
Windows Phone 8 - 3.5 Async ProgrammingWindows Phone 8 - 3.5 Async Programming
Windows Phone 8 - 3.5 Async Programming
 
Async Development con Visual Studio 2012
Async Development con Visual Studio 2012Async Development con Visual Studio 2012
Async Development con Visual Studio 2012
 
WebTalk - Implementing Web Services with a dedicated Java daemon
WebTalk - Implementing Web Services with a dedicated Java daemonWebTalk - Implementing Web Services with a dedicated Java daemon
WebTalk - Implementing Web Services with a dedicated Java daemon
 
Introduction to the New Asynchronous API in the .NET Driver
Introduction to the New Asynchronous API in the .NET DriverIntroduction to the New Asynchronous API in the .NET Driver
Introduction to the New Asynchronous API in the .NET Driver
 
El bueno, el feo y el malo
El bueno, el feo y el maloEl bueno, el feo y el malo
El bueno, el feo y el malo
 
Xml & Java
Xml & JavaXml & Java
Xml & Java
 
Apache Beam de A à Z
 Apache Beam de A à Z Apache Beam de A à Z
Apache Beam de A à Z
 
Introduction to Ajax programming
Introduction to Ajax programmingIntroduction to Ajax programming
Introduction to Ajax programming
 
Correcting Common Async/Await Mistakes in .NET
Correcting Common Async/Await Mistakes in .NETCorrecting Common Async/Await Mistakes in .NET
Correcting Common Async/Await Mistakes in .NET
 
Binary Studio Academy: Concurrency in C# 5.0
Binary Studio Academy: Concurrency in C# 5.0Binary Studio Academy: Concurrency in C# 5.0
Binary Studio Academy: Concurrency in C# 5.0
 
동기화 시대를 뛰어넘는 비동기 프로그래밍
동기화 시대를 뛰어넘는 비동기 프로그래밍동기화 시대를 뛰어넘는 비동기 프로그래밍
동기화 시대를 뛰어넘는 비동기 프로그래밍
 
About Node.js
About Node.jsAbout Node.js
About Node.js
 
Android Studio Assignment HelpCan someone who is familiar with And.pdf
Android Studio Assignment HelpCan someone who is familiar with And.pdfAndroid Studio Assignment HelpCan someone who is familiar with And.pdf
Android Studio Assignment HelpCan someone who is familiar with And.pdf
 
Getting Started with Real-Time Analytics
Getting Started with Real-Time AnalyticsGetting Started with Real-Time Analytics
Getting Started with Real-Time Analytics
 

Mehr von Giovanni Bassi

O que aprendi montando a arquitetura de microsserviços
O que aprendi montando a arquitetura de microsserviçosO que aprendi montando a arquitetura de microsserviços
O que aprendi montando a arquitetura de microsserviçosGiovanni Bassi
 
Analisando dumps de memória de aplicações .NET
Analisando dumps de memória de aplicações .NETAnalisando dumps de memória de aplicações .NET
Analisando dumps de memória de aplicações .NETGiovanni Bassi
 
Async e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraAsync e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraGiovanni Bassi
 
Conhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetesConhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetesGiovanni Bassi
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Giovanni Bassi
 
C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8Giovanni Bassi
 
Engenharia ágil de ponta a ponta do clone ao deploy
Engenharia ágil de ponta a ponta do clone ao deployEngenharia ágil de ponta a ponta do clone ao deploy
Engenharia ágil de ponta a ponta do clone ao deployGiovanni Bassi
 
Entrega contínua fica mais fácil com contêineres
Entrega contínua fica mais fácil com contêineresEntrega contínua fica mais fácil com contêineres
Entrega contínua fica mais fácil com contêineresGiovanni Bassi
 
.NET Core, ASP.NET Core e .NET Standard 2
.NET Core, ASP.NET Core e .NET Standard 2.NET Core, ASP.NET Core e .NET Standard 2
.NET Core, ASP.NET Core e .NET Standard 2Giovanni Bassi
 
.NET com contêineres Windows e Linux
.NET com contêineres Windows e Linux.NET com contêineres Windows e Linux
.NET com contêineres Windows e LinuxGiovanni Bassi
 
Async e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraAsync e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraGiovanni Bassi
 
Compartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.jsCompartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.jsGiovanni Bassi
 
Construindo uma ferramenta CLI multiplataforma com Node.js
Construindo uma ferramenta CLI multiplataforma com Node.jsConstruindo uma ferramenta CLI multiplataforma com Node.js
Construindo uma ferramenta CLI multiplataforma com Node.jsGiovanni Bassi
 
Um mergulho nos containers windows
Um mergulho nos containers windowsUm mergulho nos containers windows
Um mergulho nos containers windowsGiovanni Bassi
 
Por dentro do .NET Core
Por dentro do .NET CorePor dentro do .NET Core
Por dentro do .NET CoreGiovanni Bassi
 
Build e release pipeline com docker
Build e release pipeline com dockerBuild e release pipeline com docker
Build e release pipeline com dockerGiovanni Bassi
 
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...Giovanni Bassi
 

Mehr von Giovanni Bassi (20)

O que aprendi montando a arquitetura de microsserviços
O que aprendi montando a arquitetura de microsserviçosO que aprendi montando a arquitetura de microsserviços
O que aprendi montando a arquitetura de microsserviços
 
Sendo ágil com git
Sendo ágil com gitSendo ágil com git
Sendo ágil com git
 
Analisando dumps de memória de aplicações .NET
Analisando dumps de memória de aplicações .NETAnalisando dumps de memória de aplicações .NET
Analisando dumps de memória de aplicações .NET
 
Novidades do c# 7 e 8
Novidades do c# 7 e 8Novidades do c# 7 e 8
Novidades do c# 7 e 8
 
Async e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraAsync e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agora
 
Conhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetesConhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetes
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
 
C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8
 
Engenharia ágil de ponta a ponta do clone ao deploy
Engenharia ágil de ponta a ponta do clone ao deployEngenharia ágil de ponta a ponta do clone ao deploy
Engenharia ágil de ponta a ponta do clone ao deploy
 
Entrega contínua fica mais fácil com contêineres
Entrega contínua fica mais fácil com contêineresEntrega contínua fica mais fácil com contêineres
Entrega contínua fica mais fácil com contêineres
 
.NET Core, ASP.NET Core e .NET Standard 2
.NET Core, ASP.NET Core e .NET Standard 2.NET Core, ASP.NET Core e .NET Standard 2
.NET Core, ASP.NET Core e .NET Standard 2
 
.NET com contêineres Windows e Linux
.NET com contêineres Windows e Linux.NET com contêineres Windows e Linux
.NET com contêineres Windows e Linux
 
Async e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agoraAsync e await com JavaScript: entenda e use agora
Async e await com JavaScript: entenda e use agora
 
Compartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.jsCompartilhando código entre frontend e backend com Node.js
Compartilhando código entre frontend e backend com Node.js
 
Construindo uma ferramenta CLI multiplataforma com Node.js
Construindo uma ferramenta CLI multiplataforma com Node.jsConstruindo uma ferramenta CLI multiplataforma com Node.js
Construindo uma ferramenta CLI multiplataforma com Node.js
 
O Futuro do C#: C#8
O Futuro do C#: C#8O Futuro do C#: C#8
O Futuro do C#: C#8
 
Um mergulho nos containers windows
Um mergulho nos containers windowsUm mergulho nos containers windows
Um mergulho nos containers windows
 
Por dentro do .NET Core
Por dentro do .NET CorePor dentro do .NET Core
Por dentro do .NET Core
 
Build e release pipeline com docker
Build e release pipeline com dockerBuild e release pipeline com docker
Build e release pipeline com docker
 
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
Release contínuo de um microsserviço com Docker ASP.net core e Azure Containe...
 

Kürzlich hochgeladen

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 

C# e Visual Basic Future: Async Made Simple (DEV304)

  • 1.
  • 2.
  • 4.
  • 5.
  • 6.
  • 7. C# 4.0 + VB 10.0 Dinamismo + paridade nas linguagens C# 3.0 + VB 9.0 Language Integrated Query C# 2.0 + VB 8.0 Generics C# 1.0 + VB 7.0 Código gerenciado
  • 8.
  • 9.
  • 10. C# 5.0 + VB 11.0 Programação assíncrona C# 4.0 + VB 10.0 Dinamismo + paridade nas linguagens C# 3.0 + VB 9.0 Language Integrated Query C# 2.0 + VB 8.0 Generics C# 1.0 + VB 7.0 Código gerenciado
  • 11.
  • 12.
  • 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!
  • 45.
  • 46. try { string[] videoUrls = await ScrapeYoutubeAsync(url); // Rede Task<Video> t1 = DownloadVideoAsync(videoUrls[0]); // Baixe 2 videos Task<Video> t2 = DownloadVideoAsync(videoUrls[1]); Video[] vids = await Task.WhenAll(t1, t2); // Espere os 2 Video v = await MashupVideosAsync(vids[0], vids[1]); // CPU await v.SaveAsync(textbox.Text); // Entrada/Saída } catch (WebException ex) { ReportError(ex); }
  • 49.
  • 50.
  • 51. public static class Trace { public static void WriteLine(string message, [CallerFilePath] string file = "", [CallerLineNumber] int line = 0, [CallerMemberName] string member = "") { var s = string.Format("{0}:{1} – {2}: {3}", file, line, member, message); Console.WriteLine(s); } } Trace.WriteLine("Starting services"); Trace.WriteLine("Starting services", "c:sourcesfoo.cs", 1123, "Initialize");
  • 52. public static class Trace { public static void WriteLine(string message, [CallerFilePath] string file = "", [CallerLineNumber] int line = 0, [CallerMemberName] string member = "") { var s = string.Format("{0}:{1} – {2}: {3}", file, line, member, message); Console.WriteLine(s); } } Trace.WriteLine("Starting services"); Trace.WriteLine("Starting services", "c:sourcesfoo.cs", 1123, "Initialize");
  • 53. C# 5.0 + VB 11.0 Programação assíncrona C# 4.0 + VB 10.0 Dinamismo + paridade nas linguagens C# 3.0 + VB 9.0 Language Integrated Query C# 2.0 + VB 8.0 Generics C# 1.0 + VB 7.0 Código gerenciado
  • 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
  • 55. Language Service Compiler APIs Compiler Pipeline Metadata Import
  • 56.
  • 57.
  • 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