Ich verstehe Threading in der Theorie, aber nicht in der Praxis in .net

7

Ich habe ein grundlegendes Verständnis von Multi-Threading, aber ich musste nie etwas anderes tun als einfache Timer in einer Anwendung. Kennt jemand eine gute Ressource, die mir eine Tour geben wird, wie man mit Multithread-Anwendungen arbeitet, die Grundlagen erklärt und vielleicht einige der schwierigeren Sachen aufstellt?

    
George Mauer 08.09.2008, 14:58
quelle

5 Antworten

23

Dies ist eine großartige freie Ressource von Joseph Albahari. Threading in C #

    
Gulzar Nazim 08.09.2008, 14:59
quelle
11

Zwei großartige Artikel:

  

Was jeder Entwickler über Multithread-Anwendungen wissen muss
Verstehen Sie die Auswirkungen von Low-Lock-Techniken in Multithread-Anwendungen

Obwohl dieser Artikel nicht genau das ist, wonach Sie suchen, wird er hoffentlich im Allgemeinen hilfreich sein (d. h. ist verwandt und sehr gut gelesen):

  

Das kostenlose Mittagessen ist vorbei: Eine grundlegende Wende in Richtung Parallelität in der Software >

    
Jason Bunting 08.09.2008 15:06
quelle
5

Es gibt 4 grundlegende Möglichkeiten, Threads in .Net zu synchronisieren:

  • BackgroundWorker-Steuerelement
  • WaitHandles
  • Rückruffunktionen
  • Abfragen eines ASyncResult-Objekts

Im Allgemeinen möchten Sie ganz oben in der Liste beginnen und arbeiten. Das bedeutet, zuerst schauen und sehen, ob ein Hintergrundarbeiter-Steuerelement für die Situation geeignet ist. Es geht jedoch ziemlich genau von Windows-Formularen aus, und Sie erzeugen nur einen neuen Thread.

Also versuchen Sie es mit Waithandles. Waithandles eignen sich gut zum Koordinieren mehrerer Threads. Du kannst sie alle rausschmeißen und warten, bis alle fertig sind, oder wenn du eine bestimmte Zahl aktiv halten willst, dann wartest du nur auf eine und spawne die nächste, wenn sie fertig ist. Oder vielleicht weißt du, dass ein Thread viel früher fertig ist, also kannst du warten, bis er fertig ist, ein wenig Arbeit verrichten und dann warten, bis der Rest fertig ist.

WaitHandles scheinen vielleicht ein bisschen viel zu sein, wenn Sie zum Beispiel nur einen zusätzlichen Thread generieren und Sie nicht blockieren wollen, bevor es fertig ist. Dann können Sie einen Callback verwenden, so dass die von Ihnen angegebene Funktion aufgerufen wird, sobald der Thread abgeschlossen ist.

Schließlich, wenn und nur wenn aus irgendeinem Grund nichts von dem oben genannten funktioniert, können Sie auf das Polling zurückgreifen.

Ich kann mir fünf verschiedene Möglichkeiten vorstellen, einen neuen Thread in .Net zu bekommen, auch grob in der Reihenfolge:

  • OS erstellt, normalerweise als Ergebnis des Winforms-Ereignisses (einschließlich BackgoundWorker).
  • Obj.Begin
Joel Coehoorn 08.09.2008 15:02
quelle
2

Eine gute Web-Ressource zum Thema Multi-Threading in .NET:

Pascal 08.09.2008 15:09
quelle
1

Eine der besten Quellen, die ich zu diesem Thema kenne, ist das Buch "threading in C #": Ссылка

Ich habe einen großartigen Überblick über alles, was ein .net-Entwickler verstehen muss, um Multi-Thread-Anwendungen zu programmieren.

    
Dror Helper 18.09.2008 09:49
quelle

Tags und Links