IAsyncEnumerable, My Favorite C# 8 Feature That No One Is Using

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ธ.ค. 2024

ความคิดเห็น • 51

  • @amantinband
    @amantinband  2 ปีที่แล้ว +6

    Hope you enjoyed the video! Small correction (9:18), ForEachAsync doesn't "materialize" the IAsyncEnumerable. It iterates over it, similar to the await foreach we wrote earlier. Here is the underlying source code: github.com/dotnet/reactive/blob/85f1eb7c53e27cccdbeee3e0b044916168843fcc/Ix.NET/Source/System.Linq.Async/System/Linq/Operators/ForEach.cs#L30

  • @MilanJovanovicTech
    @MilanJovanovicTech 2 ปีที่แล้ว +35

    System.Linq.Async? I learned something new 😁

    • @amantinband
      @amantinband  2 ปีที่แล้ว +3

      Yeah it’s pretty sweet 😎

    • @JDevCode
      @JDevCode 2 ปีที่แล้ว +6

      Are the 2 best channels on TH-cam, I learned so much with both. Goats

  • @Linkario86
    @Linkario86 ปีที่แล้ว

    Amichai, I'm so glad I found your channel. You're the GOAT

  • @Misteribel
    @Misteribel 5 หลายเดือนก่อน

    Great explanation. For F# programmers, consider using the 'TaskSeq' Nuget Lib, which brings 'await foreach' to F# using Computation Expressions like 'task {...}' and 'seq{...}'.

  • @charlesstacyharrisiii2593
    @charlesstacyharrisiii2593 2 ปีที่แล้ว

    Nicely done! I love the way you explain things. You're a natural teacher!

  • @caseyspaulding
    @caseyspaulding 2 ปีที่แล้ว

    Thank you!

  • @mlhtest5928
    @mlhtest5928 ปีที่แล้ว +1

    How do you get IAsyncEnumerable to work in an api contoller or minimal api? No matter what I try it still buffers the responses and sends them all at one time. Thanks

  • @alonmore28
    @alonmore28 11 หลายเดือนก่อน

    Would you use it as a return type in web api controllers?

  • @deus_nsf
    @deus_nsf 11 หลายเดือนก่อน

    What about EF Core though? How will it interact with it? One SQL request per element of the collection? Or will it fetch all the collection like with a standard List?

  • @zlatkorekic
    @zlatkorekic 2 ปีที่แล้ว

    Great content. Highly appreciated 👍

    • @zlatkorekic
      @zlatkorekic 2 ปีที่แล้ว

      Please update VS Code, that notification is taking my attention to often 😁

    • @amantinband
      @amantinband  2 ปีที่แล้ว +1

      Hahah it's already updated in the video coming out today 😉

  • @jamesmussett
    @jamesmussett 2 ปีที่แล้ว +14

    Im lucky enough to use it on a daily basis. Extremely useful when working with sensors, networking, or any kind of real time streaming where the data being returned can potentially be infinite. Great video 👍 keep it up!

    • @amantinband
      @amantinband  2 ปีที่แล้ว +2

      Sounds interesting 👀

  • @egtdig4411
    @egtdig4411 2 ปีที่แล้ว +1

    Hey, first time viewer of the channel. Thumbs up for the short & informative video, liked it very much. Could you please share what kind of skin are you using for your terminal? It seems very useful.

    • @amantinband
      @amantinband  2 ปีที่แล้ว

      Thanks! You can follow this step by step: www.hanselman.com/blog/my-ultimate-powershell-prompt-with-oh-my-posh-and-the-windows-terminal

  • @auronedgevicks7739
    @auronedgevicks7739 10 หลายเดือนก่อน

    lol by the 3min mark I already tuned out. KISS

  • @pianoman1973
    @pianoman1973 2 ปีที่แล้ว +2

    Great tutorial !

  • @OmriKipi
    @OmriKipi 2 ปีที่แล้ว +1

    Thanks ! great video , but the sound quality is not great.

    • @amantinband
      @amantinband  2 ปีที่แล้ว +1

      I'm struggling to get good sound with the Blue Yeti. I hope the video coming out today has better sound quality. Please let me know if it's still not great! Otherwise, I think it's time to get a better mic 🙂

  • @alexlo2621
    @alexlo2621 2 ปีที่แล้ว +2

    Thank u for the video. I want to suggest another topic related to DDD/Design/Architecture. Could u post a video about anemic code/design? Cons and pros. Thank u.

    • @amantinband
      @amantinband  2 ปีที่แล้ว +3

      That's a great topic. I'll see if I can create a compelling video. Are you following @codeopinion? He covers this topic in a few different videos, I think

  • @thanzeeljalaldeen
    @thanzeeljalaldeen 2 ปีที่แล้ว

    is it possible to get the source code for this please?

  • @arnonoordover4054
    @arnonoordover4054 2 ปีที่แล้ว +1

    Correct. Even in the XStreamingElement you cannot use this…😢

  • @Osirus1156
    @Osirus1156 ปีที่แล้ว

    I agree with your opinion on why it wasn't more widely accepted. I used it quite a bit on a project and we ended up needing to write helper methods just to work with them when those helpers could have just been built in. I am hoping someday Microsoft gives it another pass to consolidate it. It is very nice when calling paged APIs though.

  • @PetrVejchoda
    @PetrVejchoda 2 ปีที่แล้ว

    this is friggin gamechanger!!! How do I not know about it?? Whares tha catch?? Can you turn it into IObservable??

    • @PetrVejchoda
      @PetrVejchoda 2 ปีที่แล้ว

      can you turn IObservable into IAsyncEnumerable? What the hell? I want to know more!!!

    • @PetrVejchoda
      @PetrVejchoda 2 ปีที่แล้ว

      being able to turn this into IObservable would make some stuff sooooo easy!!

  • @MyFuzzyAfterlife
    @MyFuzzyAfterlife 2 ปีที่แล้ว +1

    Random question, but what do you use to draw the boxes and arrows on your screen ? In today’s remote working environment I’m really looking for something this

    • @amantinband
      @amantinband  2 ปีที่แล้ว +2

      ZoomIt. Check out aka.ms/ZoomIt

  • @MrAsishMohapatra
    @MrAsishMohapatra ปีที่แล้ว

    Is it not too much advertisement in a 10 minutes video you have 4-5 ads in between and in the beginning 2?

    • @amantinband
      @amantinband  ปีที่แล้ว

      Yikes.. TH-cam controls all my ad placements before and during the video

  • @SilasPeters
    @SilasPeters 2 ปีที่แล้ว +1

    The biggest surprise to me is how easy it is to implement lazy code using yields eveywhere!

  • @pilotboba
    @pilotboba 2 ปีที่แล้ว

    Do you plan to get back to the DDD / Clean Arch series? :)

    • @amantinband
      @amantinband  2 ปีที่แล้ว

      Of course, there are still many great topics to cover 👀

  • @robertmrobo8954
    @robertmrobo8954 2 ปีที่แล้ว

    Why was it named IAsyncEnumerable instead of IEnumerableAsync?

  • @HadrielWonda
    @HadrielWonda 2 ปีที่แล้ว

    System.Linq.Async??
    I wonder how long that has been functional 😊

  • @nayanc4353
    @nayanc4353 2 ปีที่แล้ว

    I just used it today and was wondering about cancellationtoken usage. And just saw your video!Great timing! 🙂
    I see you have used break keyword without cancellation token. I couldn't find such concise explanation anywhere. Thank you!
    But can you explain use of cancellation token with iasyncenumerable?

    • @amantinband
      @amantinband  2 ปีที่แล้ว +1

      I might do a follow up video on this. Thanks, Nayan!

  • @SolomonTheStoryTeller
    @SolomonTheStoryTeller 2 ปีที่แล้ว

    all clean architecture implementations I have seen in my 15+ years experience and DDD across several organizations (multi billion dollars)were mostly terrible.
    I have come across a project two years ago that was .net core 3.1 vertical slice cqrs and mediator, fluent result, and angular as frontend.
    It was a beautiful project to work with.
    Clean architecture on the other hand, i am done with it

    • @amantinband
      @amantinband  2 ปีที่แล้ว

      I've worked on and researched many projects within Microsoft and public open-source projects, and I tend to agree.
      Working in a small aligned team (1-5 devs) is a whole different story than bigger, unaligned teams.

    • @predigr
      @predigr ปีที่แล้ว

      So, what architecture to use? where can we find some documentation?

  • @juke-duke
    @juke-duke 2 ปีที่แล้ว

    Are you using Vim for your keybinds?

  • @justinian.erdmier
    @justinian.erdmier 2 ปีที่แล้ว +1

    This is awesome and I think will solve a pretty nasty bit of code I haven't been able to simplify. One question: Isn't printing the statement "Received 10 numbers" a bit misleading? The Console.WriteLine() only gets called once, but if the NumbersClient only returns a page of 10 (with the range of 0-9), then 11 would only be in our final results if the NumbersClient returned a second page (so actually 20 numbers). I'm not too familiar with the yield keyword, so that part kind of confused me.

    • @amantinband
      @amantinband  2 ปีที่แล้ว +2

      Yes, it isn't very clear. It would have been clearer to put it right under the call to the client. Sorry about that 🙂

  • @Abushalabi
    @Abushalabi 3 หลายเดือนก่อน

    Very bad example to show the benefits of IAsyncEnumerable