Mehrere Methoden gleichzeitig aufrufen oder aufrufen?

7

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?

    
Abhishek Ranjan 14.03.2011, 12:05
quelle

5 Antworten

9
%Vor%

Oder kürzer

%Vor%     
Arsen Mkrtchyan 14.03.2011, 12:08
quelle
14

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.

    
Marc Gravell 14.03.2011 12:11
quelle
2

Was Sie tun möchten, ist asynchrone Methodenaufrufe.

Ссылка

    
Patrick 14.03.2011 12:08
quelle
1

Wenn Sie Ihre Methoden asynchron machen, würde es funktionieren.

(Basis-Stub):

%Vor%

usw.

    
Niklas Wulff 14.03.2011 12:09
quelle
1

Sehen Sie sich das ThreadPool.QueueUserWorkItem und dann hier für ein Beispiel

aus der MSDN-Dokumentation

%Vor%     
Pieter Germishuys 14.03.2011 12:09
quelle

Tags und Links