Wie man mehr als eine Methode zur gleichen Zeit in meiner Seite laden in asp.net aufrufen ?? Ich habe 4 Methoden, um mein Seitenladeereignis aufzurufen. aber ich möchte alle 4 Methoden aufrufen und nicht warten, bis die erste Methode fertig ist und dann die 2. Methode aufrufen.
Wie erreichen Sie dies in asp.net 4.0?
Zunächst ist es wichtig zu wissen, ob das, was Sie tun, vernünftig ist. Wenn sie alle CPU-gebunden sind, dann tun nicht das, IMO; Ein Web-Server ist bereits stark mit Threads versehen und ist in der Regel zunächst ein geschäftiger Ort. Die Chancen stehen gut, dass Sie das Ganze mit mehreren Kernen verlangsamen werden. Es wird aber für 1 Benutzer gut aussehen!
Wenn Sie IO-gebunden sind, gibt es eine beliebige Anzahl Möglichkeiten, dies zu tun; Am besten wäre es, die integrierten asynchronen Methoden von allem zu verwenden, mit dem Sie gerade sprechen, also können Sie IOCP anstelle von regulären Threads verwenden. Für NetworkStream
würden Sie BeginRead(...)
usw. verwenden.
Dann müssen Sie alles zusammenfügen. Viel mehr Wege; persönlich tendiere ich dazu, Monitor.Wait
und Monitor.Pulse
zu verwenden, da dadurch vermieden wird, zu nicht verwaltetem Code zu wechseln (viele Wait-Handles sind tatsächlich vom Betriebssystem bereitgestellt).
Beachten Sie auch: Threading / Parallelität kommt in einem Bündel neben vielen lustigen Möglichkeiten zum Scheitern; normalerweise müssen Sie sich nur über statische Methoden / Daten für die Synchronisation sorgen, aber wenn Sie mehrere Threads in einer einzigen Anfrage haben tun Dinge: achten Sie auf Beulen ... dort sind viele.
Die nächste Version von .NET soll Fortsetzungen erleichtern. Ich muss einen Blick darauf werfen, wie einfach wir den aktuellen experimentellen Code auf IOCP-Szenarien anwenden können.
Wenn Sie Ihre Methoden asynchron machen, würde es funktionieren.
(Basis-Stub):
%Vor%usw.
Sehen Sie sich das ThreadPool.QueueUserWorkItem und dann
aus der MSDN-Dokumentation
%Vor%