To zalezi na tobe, co tvuj program ma delat ;-)
Pokud bys to napsal spravne a fakt by ten zapis do streamu probihal na pozadi, pak by ti mohlo dojit k tomu, ze poradi dat ve streamu bude jine, nez bylo poradi volani te funkce, ktera mela do streamu neco zapsat. Pokud v tom miste, odkud budete tu funkci pro zapis volat, chcete mit minimalni zdrzeni pri volani te zapisovaci funkce, tak treba to zapisovani na pozadi muze byt resenim. Ale jak sem psal, zapisy muzou byt prehazene.
Pokud chci nezdrzovat zapisy a mit spravne razeni, tak proste hodim to co, se ma zapsat, do fronty (bufferu) a na pozadi mi bezi proces, ktery frontu vybira a zapisuje data do streamu.
async await na to neni k nicem, to je takova obezlicka, ktera vam usetri nejake kodovani, ale ktera spohlive mate naprostou vetsinu lidi. Ja to nekdy pouzivam, ale moc casto zase ne ;-).
Priznam se, ze vam to nerknu ted z placu na 100%, ale hadal bych, ze tak ja jste to zapsal vy, by to ani na pozadi nebezelo ;-). V podstate jde o to, ze ta vase metoda nema v sobe zadny bezici Task. Sice to mate jako async metodu, ktera vraci Task, ale v te metode zadny bezici task neni. Dokonce si myslim, ze vam compiler na to rekne, ze v te metode nemate zadny await na metodu, ktera vraci Task. Uplne "uvnitr" vsech await volani musi byt volani metody cca Task MojeAsyncMetoda() { return Task.Run(() => muj_hrozny_vypocet());} .