2016-08-09 174 views
1

ich in die Programmierung neu bin, also bitte verzeiht mir denn, wenn die Frage ist eine dumme ein-Standard Threading-Modell für eine .Net-Anwendung

Ich will wissen, dass in einem normalen C# Programm, wo wir es nicht tun Multi-Threads manuell im Code erstellen, läuft das ganze Programm auf einem einzigen Haupt-Thread ODER gibt es noch andere Threads, die für die Ausführung des Programms erstellt wurden?

+1

Etwas muss der Anwendung mitteilen, einen anderen Thread zu verwenden. Es passiert nicht automatisch. – itsme86

+5

Abhängig von der Konfiguration kann die [Garbage Collection] (https://msdn.microsoft.com/en-us/library/ee787088 (v = vs.110) .aspx # concurrent_garbage_collection) in einem zusätzlichen Thread ausgeführt werden. –

+0

C# verwendet explizite Parallelität, was bedeutet, dass Sie als Programmierer die Kontrolle über Threads haben und explizit zusätzliche Threads starten müssen. Implizite Parallelität ist derzeit nicht sehr praktikabel, da sie eine genaue Kenntnis der spezifischen Funktionalität des Programms erfordert. https://en.wikipedia.org/wiki/Implicit_parallelism – crlanglois

Antwort

2

Kurze Antwort, es gibt andere Threads mit dem Haupt-Thread, die benötigt werden, um die Anwendung zu unterstützen.

Dies kann in Visual Studio getestet werden.

Erstellen Sie eine einfache Konsolenanwendung. Setzen Sie einen Debug-Punkt und starten Sie das Debugging. Sobald die Anwendung auf diesen Debug-Punkt bekommt, offen „Threads“ Fenster von

Debug -> Windows -> Threads 

Sie werden sehen, so etwas wie:

enter image description here

für Debugger Einige der oben genannten Themen sind, aber vor allem eine App hätte Hauptfaden, GC (Garbage Collection) und Finalizer-Thread usw.

+0

Ein Finalizer-Thread? Was ist das? –

+0

GC und Finalizer werden normalerweise auf separaten Threads ausgeführt. Wenn das ist, was Sie fragen ... Sehen Sie mehr auf .. https://ericlippert.com/2015/05/05/21/when-alles-sie-know-is-wrong-part-two/ ('The Finalizer in der Regel Wird auf einem eigenen Thread ausgeführt. Wenn Sie ein Objekt haben, das in gewisser Weise eine Affinität zu einem bestimmten Thread hat. – Habib

3

Von Threading (C#):

verfügt standardmäßig über ein C# Programm einen Thread. Die Hilfs-Threads können jedoch erstellt und verwendet werden, um Code parallel zum primären -Thread auszuführen.