- Honor 400 - és mégis mozog a kép
- Android alkalmazások - szoftver kibeszélő topik
- iPhone topik
- Google Pixel topik
- Mobil flották
- Honor 400 Pro - gép a képben
- One mobilszolgáltatások
- Samsung Galaxy Z Fold6 - ugyanaz, sarkosan fogalmazva
- Samsung Galaxy A34 - plus size modell
- Azonnali mobilos kérdések órája
Új hozzászólás Aktív témák
-
joysefke
veterán
válasz
Froclee #8758 üzenetére
Az async void-dal egy csomó helyen meg van kötve az ember keze.
Event handlerek tipikusan void implementációt akarnak, ott csak az async void jöhet szóba.
Most egy xamarin projekt van előttem megnyitva:
tipikus event handler:
private async void Trending_Clicked(object sender, EventArgs e)
{
await Navigation.PushAsync(new TrendingPage());
}Ez meg egy lifecycle override az ősosztályon, csak async void-ot fogad el
protected override async void OnAppearing()
{
base.OnAppearing();
await something(...)
}szóval én kerülöm ezt az async void dolgot mint a pestist a saját metódusaimban, de amikor az interfész rákényszerít, akkor mit tudnék mást tenni?
-
joysefke
veterán
válasz
Froclee #8758 üzenetére
Azt elfogadom, hogy az async void Dispose() nem működik úgy ahogyan én azt elvárnám
A compiler az IDisposable interfészre -és úgy általában minden void visszatérésű metódusra- figyelmeztetés nélkül elfogad egy async void implementációt.
Ez fordul és fut (C# 7.1+):
using System;
using System.Threading.Tasks;
public interface iface
{void func1(int delay);
Task func2(int delay);}
class Program : iface
{
static async Task Main(string[] args)
{
Program p = new Program();
Console.WriteLine($"starting {nameof(p.func1)}");
p.func1(3500);
Console.WriteLine($"{nameof(p.func1)} started");
Console.WriteLine($"starting and awaiting {nameof(p.func2)}");
await p.func2(2000);
await Task.Delay(3500-2000 + 500);
}
public async void func1(int delay)
{await Task.Delay(delay);
Console.WriteLine($"Hello from {nameof(func1)}");}
public async Task func2(int delay)
{await Task.Delay(delay);
Console.WriteLine($"Hello from {nameof(func2)}");}
}A
p.func1()
hívás nem await-elhető, de működik raja az async keyword, a func1 implementációján belül a compiler kulcsszóvá alakítja az await-et és a func1-en belül awaithelhetőek lesznek az async metódusok. A példában a func1 törzsében a végrehajtás előbb bevárja a Task.Delay()-t és csak aztán ír a konzolra.Szóval ez az async void dolog minden hibájával együtt nagyjából működik.
Ezért nem értem, hogy az xUnit-ban egy async void Dispose hívásban a végrehajtás a Dispose metódus törzsében miért hagyja figyelmen kívül az await kulcsszót, elindítja a Task-ot amit kiadtam neki, de nem várja be
.. .
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- OLED TV topic
- Honor 400 - és mégis mozog a kép
- Formula-1
- Android alkalmazások - szoftver kibeszélő topik
- Kazy Computers - Fehérvár - Megbízható?
- Óvodások homokozója
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Counter-Strike: Global Offensive (CS:GO) / Counter-Strike 2 (CS2)
- Milyen házat vegyek?
- Hálózati / IP kamera
- További aktív témák...
- BESZÁMÍTÁS! MSI SUPRIM X RTX 4080 16GB videokártya garanciával hibátlan működéssel
- BESZÁMÍTÁS! 6TB Seagate SkyHawk SATA HDD meghajtó garanciával hibátlan működéssel
- BESZÁMÍTÁS! 4TB Samsung 870 EVO SATA SSD meghajtó garanciával hibátlan működéssel
- BESZÁMÍTÁS! Intel Core i7 8700K 6 mag 12 szál processzor garanciával hibátlan működéssel
- BESZÁMÍTÁS! Intel Core i7 4790 4 mag 8 szál processzor garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone i5 12400F 16/32/64GB RAM RTX 4060 Ti 8GB GAMER PC termékbeszámítással
- Kingmax 1x2GB DDR2 800 RAM eladó
- Országosan a legjobb BANKMENTES részletfizetési konstrukció! Lenovo ThinkPad L16 Gen 1 Prémium
- Felújított szerverek, storage-ok, hálózati eszközök Enterprise szinten, minden gyártótól
- Bomba ár! HP ProBook 430 G5 - i5-8GEN I 8GB I 256GB SSD I HDMI I 13,3" I Cam I W11 I Garancia!
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest