• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Asp.Net MVC 5 Async Await Metody nie działają równocześnie a jedna po drugiej???

0 głosów
727 wizyt
pytanie zadane 27 czerwca 2018 w C# przez tomek2323 Bywalec (2,050 p.)

Nie wiem czemu metody nie działają równocześnie a jedna po drugiej zamiast 3 sekund działają 9???

Chodzi o metodę Index? Ktoś wie co trzeba zmienić ???

public class DeptController : Controller
    {

        private MyDb db = new MyDb();


        public async Task<string> GetCountryAsync()
        {
            await Task.Delay(3000); //Use - when you want a logical delay without blocking the current thread.  
            return "India";
        }

        public async Task<string> GetCountry1Async()
        {
            await Task.Delay(3000); //Use - when you want a logical delay without blocking the current thread.  
            return "India";
        }

        public async Task<string> GetCountry2Async()
        {
            await Task.Delay(3000); //Use - when you want a logical delay without blocking the current thread.  
            return "India";
        }

        public async Task<ActionResult> Index()
        {
            Stopwatch spot = new Stopwatch();
            spot.Start();
            string napis =await GetCountryAsync();
            string napis1 = await GetCountry1Async();
            string napis2 = await GetCountry2Async();
            spot.Stop();
            TimeSpan span = spot.Elapsed;
            ViewBag.Stop = span;
            return View(await db.Departments.ToListAsync());
        }

        public ActionResult Create()
        {
            return View(new Department());
        }


        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Create(Department dept)
        {
            if(ModelState.IsValid)
            {
                db.Departments.Add(dept);
                await db.SaveChangesAsync();
                Thread.Sleep(2000);
                Console.WriteLine("Wiadomość");
                return RedirectToAction("Index");
            }
          else
            {

                return View(dept);
            }

          
        }


        public async Task<ActionResult> Details(int id)
        {
            Department dept = await db.Departments.FindAsync(id);

            return View(dept);




        }




    }
}

 

komentarz 29 czerwca 2018 przez mbady Obywatel (1,280 p.)

Operator await powoduje uruchomienie metody i czeka (w pewnym sensie) aż się zakończy i sterowanie znów wróci do wywołania Index.

Jeśli chcesz aby te zadania wywołały się asynchronicznie to usuń await z przed wywołań metod i użyj Task.WaitAll(), przekazując tablicę zadań. Przykłady znajdziesz w internecie.

Ten przykład jest dość dobry Rozpoczynanie wielu zadań asynchronicznych i przetwarzanie ich w chwili zakończenia

komentarz 29 czerwca 2018 przez tomek2323 Bywalec (2,050 p.)
Dzięki sprawdzę zaczynam dopiero z tym a nigdzie nie można zbytnio znaleźć nic sensownego jak sprawdzić czy coś co się zrobi działa czy nie :)
komentarz 29 czerwca 2018 przez mbady Obywatel (1,280 p.)

A w jaki sposób szukałeś, bo ja wpisałem w google frazę "c# async await multiple calls" i w pierwszych kilku "hit-ach" uzyskałem odpowiedź?

komentarz 29 czerwca 2018 przez tomek2323 Bywalec (2,050 p.)
asp net mvc async await

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 311 wizyt
pytanie zadane 2 marca 2020 w C# przez Moras Obywatel (1,620 p.)
0 głosów
1 odpowiedź 506 wizyt
pytanie zadane 7 marca 2019 w C# przez Krystek102 Bywalec (2,440 p.)
+1 głos
1 odpowiedź 643 wizyt
pytanie zadane 11 października 2018 w C# przez tomek2323 Bywalec (2,050 p.)

93,425 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,785 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...