Sie sind hier:
Wissen
Telefon (Mo-Fr 9 bis 16 Uhr):
0201/649590-0
|
Kontaktformular
MENU
Medien
Übersicht
Lexikon/Glossar
Spickzettel
Weblog
Konferenzvorträge
Fachbücher
Fachartikel
Leserportal
Autoren gesucht!
Literaturtipps
Praxisnahe Fallbeispiele
Downloads
Newsletter
.NET
Startseite
.NET 8.0
.NET 7.0
.NET 6.0
.NET 5.0
.NET Core
.NET 4.0/4.5.x/4.6.x
.NET 3.0/3.5
.NET 2.0
.NET-Lexikon
Programmiersprachen
Entwicklerwerkzeuge
Klassenreferenz
Softwarekomponenten
Windows Runtime
World Wide Wings-Demo
Versionsgeschichte
Codebeispiele
ASP.NET
Artikel
Bücher
Schulung & Beratung
Konferenzen/Events
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Technische Beiträge
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
Forum
Schulung & Beratung
PowerShell
Startseite
Commandlet-Referenz
Codebeispiele
Commandlet Extensions
Versionsgeschichte
Schulungen+Beratung
Windows
Startseite
Windows Runtime (WinRT)
Windows PowerShell
Windows Scripting
Windows-Schulungen
Windows-Lexikon
Windows-Forum
Scripting
Startseite
Lexikon
FAQ
Bücher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
WMI-Klassenreferenz
Scripting-Tools
WSH-Editoren
Codebeispiele
.NET-Scripting
Forum
Schulung & Beratung
Nutzer
Anmeldung/Login
Buchleser-Registrierung
Gast-Registrierung
Hilfe
Website-FAQ
Technischer Support
Site Map
Tag Cloud
Suche
Kontakt
Erklärung des Begriffs: CSharp 5.0 (C# 5.0)
Begriff
CSharp 5.0
Abkürzung
C# 5.0
Eintrag zuletzt aktualisiert am
24.05.2022
Zur Stichwortliste unseres Lexikons
Was ist
CSharp 5.0
?
Die Verison 5.0 von C# ist im
.NET Framework 4.5
enthalten und wird von
Visual Studio 2012
unterstützt.
Es gibt zwei neue Features:
1. vereinfachtes asynchrones Programmieren mit async/
await
2.
Caller Info Attribute
s
Vereinfachtes asynchrones Programmieren mit async/
await
Auf Basis der in
.NET 4.0
eingeführten
Task Parallel Library
(
TPL
) bietet Microsoft ein neues, sprachunterstütztes Pattern für asynchrones Programmieren in .NET. Eine
Methode
kann mit dem neuen Schlüsselwort async (C#) bzw. Async (Visual Basic) deklarieren, dass sie plant, im Laufe ihrer Ausführung die Kontrolle an den Aufrufer zurückzugeben. Eine solche asynchrone
Methode
kann ein Task-
Objekt
(aus der
TPL
) oder nichts zurückliefern. Die
Methode
sollte aber auf das Wort "async" enden. Innerhalb der asynchronen
Methode
wird die Kontrolle dann genau nach dem ebenfalls neuen Schlüsselwort Await bzw.
await
an den Aufrufer zurückgegeben. Await bezieht sich immer auf ein Task-
Objekt
, das man entweder selbst erzeugt hat oder von einer anderen asynchronen
Methode
stammt.
Listing 1 zeigt ein Beispiel, indem zunächst ein asynchroner HTTP-Download gestartet wird und dann eine einfache Warteanzeige (Ausgabe von Punkten) ausgibt, die ebenfalls asynchron läuft. Der HTTP-Download basiert auf der neuen
Methode
GetAsync() in der neuen Klasse
System.Net
.Http.HttpClient. Die Warteanzeige verwendet einen selbsterstellten Task. Durch Drücken einer Taste kann man die Konsolenanwendung jederzeit beenden. Im diesem Stil sollen zahlreiche Klassen in der .NET-Klassenbibliothek (z.B.
System.IO
und
System.Data
) neue asynchrone
Methode
n erhalten. In der aktuell verfügbaren Preview-Version ist dies aber noch nicht komplett umgesetzt.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hauptprogramm Start");
DownloadAsync();
Console.WriteLine("Warten auf Tastendruck");
WarteAnzeige();
Console.ReadLine();
Console.WriteLine("Hauptprogramm Ende");
}
/// <summary>
/// Asynchroner Download (Rückgabe: nichts)
/// </summary>
static private async void DownloadAsync()
{
Console.WriteLine("DownloadAsync() - Schritt 1");
Task<byte[]> task = GetHttpAsync(new Uri("
http://www.IT-Visions.de
"));
Console.WriteLine("DownloadAsync() - Schritt 2");
byte[] ergebnis =
await
task;
Console.WriteLine("DownloadAsync() - Schritt 3");
Console.WriteLine("DownloadAsync() - Ergebnis: " + ergebnis.Length + " Bytes empfangen");
}
/// <summary>
/// Asynchroner Download (Rückgabe: Task<T></T>)
/// </summary>
static private async Task<byte[]> GetHttpAsync(Uri current
URI
)
{
Console.WriteLine("GetHttpAsync() - Schritt 1.
URL
= " + current
URI
);
HttpClient client = new HttpClient() { MaxResponseContentBufferSize = 1000000 };
Console.WriteLine("GetHttpAsync() - Schritt 2.
URL
= " + current
URI
);
HttpResponseMessage httpRM =
await
client.GetAsync(current
URI
);
Console.WriteLine("GetHttpAsync() - Schritt 3.
URL
= " + current
URI
);
return httpRM.Content.ReadAsByteArray();
}
/// <summary>
/// Warteanzeige mit eigenem Task-
Objekt
/// </summary>
static private async Task WarteAnzeige()
{
var t = new Task(() => Print(10));
t.Start();
await
t;
}
/// <summary>
///
Methode
für Task in WarteAnzeige()
/// </summary>
static private void Print(int Anzahl)
{
for (int I = 0; I < Anzahl; i++)
{
Console.Write(".");
System.Threading
.Thread.Sleep(100);
}
}
}
Listing 1: Asynchrones Programmieren in
.NET 4.0
Caller Info Attribute
s
Als weitere Möglichkeit bieten der C# 5.0- und
VB 11.0
-
Compiler
sogenannte
Caller Info Attribute
s ([CallerFilePath]
[CallerLineNumber], [CallerMemberName]), mit denen man
Methode
nparameter annotieren kann. Dadurch erhält die gerufene
Methode
Informationen über den Aufrufer (vgl.
_FILE__ und __LINE_
in C++).
Visual Basic wird noch ebenbürtiger zu C# durch die Übernahme der Schlüsselwörter Global (zur Namensraumfestlegung) und Yield (zur
Iterator
-Implementierung). Auch die Call Hierarchy-Ansicht in der
Entwicklungsumgebung
, die in
Visual Studio 2010
für C# eingeführt wurde, gibt es nun für Visual Basic.
Querverweise zu anderen Begriffen im Lexikon
Caller Info Attribute
Task Parallel Library (TPL)
Entwicklungsumgebung
Visual Studio 2012 (VS2012)
Visual Studio 2010 (VS2010)
.NET Framework 4.5 (.NET 4.5)
System.Threading
System.Data
System.Net
System.IO
.NET 4.0
Iterator
Compiler
Methode
Objekt
await
Visual Basic 2012 (VB 11.0)
Task Parallel Library (TPL)
Uniform Resource Locator (URL)
Uniform Resource Identifier (URI)
Beratung & Support
Anfrage für Beratung/Consulting zu CSharp 5.0 C# 5.0
Gesamter Beratungsthemenkatalog
Technischer Support zum CSharp 5.0 C# 5.0
Schulungen zu diesem Thema
Neuerungen in C# 5.0
C#-Basiswissen (Grundlagen der Programmiersprache C#)
.NET 4.5-Update - Die Neuerungen in .NET Framework 4.5/4.5.1/4.5.2 und Visual Studio 2012/2013 im Überblick
Anfrage für eine individuelle Schulung zum Thema CSharp 5.0 C# 5.0
Gesamter Schulungsthemenkatalog
Bücher zu diesem Thema
Alle unsere aktuellen Fachbücher
E-Book-Abo für ab 99 Euro im Jahr