Successfully reported this slideshow.
Your SlideShare is downloading. ×

Correcting common mistakes, async await

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 27 Ad
Advertisement

More Related Content

More from Brandon Minnick, MBA (20)

Recently uploaded (20)

Advertisement

Correcting common mistakes, async await

  1. 1. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait
  2. 2. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait async Task ReadDataFromUrl(string url) { WebClient wc = new WebClient(); byte[] result = await wc.DownloadDataTaskAsync(url); string data = Encoding.ASCII.GetString(result); LoadData(data); }
  3. 3. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait async Task ReadDataFromUrl(string url) { WebClient wc = new WebClient(); byte[] result = await wc.DownloadDataTaskAsync(url); string data = Encoding.ASCII.GetString(result); LoadData(data); } Thread 1
  4. 4. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait async Task ReadDataFromUrl(string url) { WebClient wc = new WebClient(); byte[] result = await wc.DownloadDataTaskAsync(url); string data = Encoding.ASCII.GetString(result); LoadData(data); } Thread 2
  5. 5. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait async Task ReadDataFromUrl(string url) { WebClient wc = new WebClient(); byte[] result = await wc.DownloadDataTaskAsync(url); string data = Encoding.ASCII.GetString(result); LoadData(data); } Thread 1
  6. 6. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait async Task ReadDataFromUrl(string url) { WebClient wc = new WebClient(); byte[] result = await wc.DownloadDataTaskAsync(url); string data = Encoding.ASCII.GetString(result); LoadData(data); }
  7. 7. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait async Task ReadDataFromUrl(string url) { WebClient wc = new WebClient(); byte[] result = await wc.DownloadDataTaskAsync(url); string data = Encoding.ASCII.GetString(result); LoadData(data); } private sealed class <ReadDataFromUrl>d_1 : IAsyncStateMachine
  8. 8. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait async Task ReadDataFromUrl(string url) { WebClient wc = new WebClient(); byte[] result = await wc.DownloadDataTaskAsync(url); string data = Encoding.ASCII.GetString(result); LoadData(data); } private string <data>5_3; private byte[] <result>5_2; private WebClient <wc>5_1; public string url;
  9. 9. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait async Task ReadDataFromUrl(string url) { WebClient wc = new WebClient(); byte[] result = await wc.DownloadDataTaskAsync(url); string data = Encoding.ASCII.GetString(result); LoadData(data); } private void MoveNext();
  10. 10. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait public void MoveNext() { uint num = (uint)this.$PC; this.$PC = -1; try { switch (num) { case 0: this.<wc>__0 = new WebClient(); this.$awaiter0 = this.<wc>__0.DownloadDataTaskAsync(this.url).GetAwaiter(); this.$PC = 1; ... return; break; case 1: this.<result>__1 = this.$awaiter0.GetResult(); this.<data>__2 = Encoding.ASCII.GetString(this.<result>__1); this.$this.LoadData(this.<data>__2); break; default: return; } } catch (Exception exception) { ... } this.$PC = -1; this.$builder.SetResult(); }
  11. 11. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait public void MoveNext() { uint num = (uint)this.$PC; this.$PC = -1; try { switch (num) { case 0: this.<wc>__0 = new WebClient(); this.$awaiter0 = this.<wc>__0.DownloadDataTaskAsync(this.url).GetAwaiter(); this.$PC = 1; ... return; break; case 1: this.<result>__1 = this.$awaiter0.GetResult(); this.<data>__2 = Encoding.ASCII.GetString(this.<result>__1); this.$this.LoadData(this.<data>__2); break; default: return; } } catch (Exception exception) { ... } this.$PC = -1; this.$builder.SetResult(); } case 0: this.<wc>__0 = new WebClient(); this.$awaiter0 = this.<wc>__0.DownloadDataTaskAsync(this.url).GetAwaiter(); this.$PC = 1; ... return;
  12. 12. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait public void MoveNext() { uint num = (uint)this.$PC; this.$PC = -1; try { switch (num) { case 0: this.<wc>__0 = new WebClient(); this.$awaiter0 = this.<wc>__0.DownloadDataTaskAsync(this.url).GetAwaiter(); this.$PC = 1; ... return; break; case 1: this.<result>__1 = this.$awaiter0.GetResult(); this.<data>__2 = Encoding.ASCII.GetString(this.<result>__1); this.$this.LoadData(this.<data>__2); break; default: return; } } catch (Exception exception) { ... } this.$PC = -1; this.$builder.SetResult(); } case 1: this.<result>__1 = this.$awaiter0.GetResult(); this.<data>__2 = Encoding.ASCII.GetString(this.<result>__1); this.$this.LoadData(this.<data>__2); break;
  13. 13. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait public void MoveNext() { uint num = (uint)this.$PC; this.$PC = -1; try { switch (num) { case 0: this.<wc>__0 = new WebClient(); this.$awaiter0 = this.<wc>__0.DownloadDataTaskAsync(this.url).GetAwaiter(); this.$PC = 1; ... return; break; case 1: this.<result>__1 = this.$awaiter0.GetResult(); this.<data>__2 = Encoding.ASCII.GetString(this.<result>__1); this.$this.LoadData(this.<data>__2); break; default: return; } } catch (Exception exception) { ... } this.$PC = -1; this.$builder.SetResult(); } try { catch (Exception exception) { . . . }
  14. 14. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait
  15. 15. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait
  16. 16. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait
  17. 17. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait
  18. 18. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait
  19. 19. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait
  20. 20. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait
  21. 21. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait
  22. 22. @TheCodeTraveler https://www.codetraveler.io/NDCSydney-2018-AsyncAwait

Editor's Notes

  • Every time we add the `async` keyword, the compiler creates a new class.
    Each class increases our app size by appx. 100 bytes
  • Every time we add the `async` keyword, the compiler creates a new class.
    Each class increases our app size by appx. 100 bytes
  • Every time we add the `async` keyword, the compiler creates a new class.
    Each class increases our app size by appx. 100 bytes
  • Best way to learn – free videos
    Paid for instructors
    Certification, actually valued by employers
    Great ecosystem of books

×