Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Microsoft Visual Basic 2010 – Das Entwicklerbuch
A Note Regarding Supplemental Files
Vorwort
Einleitung
Danksagungen
von Sarika Calla
von Klaus Löffelmann
Support
I. Der Einstieg in Sprache und Entwicklungs-Werkzeuge
1. Einführung
Einführung
Was brauchen Sie, um mit diesem Buch zu arbeiten?
Die preiswerte Alternative: die Express Editions
Die Begleitdateien zum Buch
2. »Symbolischer Allzweckbefehlscode für Anfänger«
Visual Studio das erste Mal starten
Konsolenanwendungen (Console Applications)
Anwendung starten
Anatomie eines (Visual Basic-)Programms
Programmstart mit der Main-Methode
Methoden mit und ohne Rückgabewerte
Definieren von Methoden ohne Rückgabewerte mit Sub
Definieren von Methoden mit Rückgabewerten mit Function
Deklaration von Variablen
Nullables
Ausdrücke und Variablendefinitionen
Gleichzeitiges Deklarieren und Definieren von Variablen
Komplexe Ausdrücke
Boolesche Ausdrücke
Was sind Objekte im Unterschied zu »normalen« Datentypen?
Ableiten von Objekten und abstrakten Objekten
Eigenschaften
Typliterale zur Typfestlegung von Konstanten
Typsicherheit
Lokaler Typrückschluss
Arrays und Auflistungen
Programmcode bedingt ausführen
If ... Then ... Else ... ElseIf ... End If
Logische Operatoren And, Or, Xor, Not
Beispiele
Vergleichsoperatoren, die boolesche Ergebnisse zurückliefern
Kurzschlussauswertungen mit OrElse und AndAlso
Select ... Case ... End Select
If-Operator und IIf-Funktion
Schleifen
For ... Next-Schleifen
Verschachteln von For-Schleifen
For Each-Schleifen
Do ... Loop- und While ... End While-Schleifen
Exit – Vorzeitiges Verlassen von Schleifen
Continue – Vorzeitige Schleifenwiederholung
Verkürzter Zugriff auf Objekteigenschaften und -methoden mit With ... End With
Gültigkeitsbereiche (Scope) von Variablen
Die Operatoren += und –= und ihre Verwandten
Die Bitverschiebeoperatoren << und >>
Fehlerbehandlung im Code
Achtung! Visual Basic 6.0/VBA-Code!
Elegantes Fehlerabfangen mit Try/Catch/Finally
Das Ausnahmenabfangen ist nicht nur auf einen Ausnahmetyp beschränkt
Und wozu dient Finally?
3. Einführung in .NET Framework
Was ist .NET und aus was besteht es?
Was ist eine Assembly?
Was ist ein Namespace?
Einbinden von Namespaces und Assemblys in Codedateien und Projekten am Praxisbeispiel
Was versteckt sich hinter CLR (Common Language Runtime) und CLI (Common Language Infrastructure)?
Was ist die FCL (Framework Class Library) und was die BCL (Base Class Library)?
Was ist das CTS (Common Type System)?
Was ist CIL/MSIL (Microsoft Intermediate Language) und wozu dient der JITter?
4. Rundgang durch Visual Studio
Einführung
Visual Studio das erste Mal starten – das Profil auswählen
Die Startseite – der Ausgangsort für Ihre Entwicklungsaufgaben
Mit der Entwicklung beginnen – neue Projekte erstellen
Vorlagen verwalten
Vorlagen ändern
Aus früheren Visual Studio-Versionen auf Visual Studio 2010 migrieren
Mit Visual Studio 2003-2008 erstellte Projekte aktualisieren
Dinge, die beim Konvertieren von Projekten nach Visual Studio 2010 zu beachten sind
Visual Basic 6.0-Anwendungen auf Visual Studio 2010 aktualisieren
Anwendungen für mehrere .NET Framework-Versionen (Multizielversionen) unter Visual Studio 2010
Die Geschichte der Multizielversionen
Multizielversionen für neue Projekte
Die .NET Framework-Zielversion für Anwendungen ändern
Profile verstehen
Das Clientprofil ist Vorgabe für Clientprojekte
Wissenswertes über Multizielversionen
Grenzen der Multizielversionen
Ein näherer Blick auf die neue und verbesserte WPF-basierte IDE
Bildschirmressourcen verwalten und effizient nutzen
Horizontale und vertikale Registerkartengruppe
Unterstützung mehrerer Bildschirme und abdockbare Fenster
Beständigkeit des Fensterlayouts
Code: navigieren, suchen und nachvollziehen
Navigieren zu
Zwischen Codeblöcken navigieren
Hervorheben und Navigieren zwischen Symbolverweisen
Die Hervorhebungsfarbe ändern
Verweise hervorheben-Funktion abschalten
Regionen und Gliederungen
Architektur-Explorer
Sequenzdiagramme
Klassendiagramme
Bottom-up-Programmierung
Vorschlagsmodus (erst anwenden)
Pascal Case-Filterung in IntelliSense
Generate From Usage
Typen anpassen mit dem Dialog Neuen Typ generieren
Visual Studio erweitern
Visual Studio-Erweiterungen verwalten
Erweiterungsarten
5. Einführung in Windows Forms – Designer und Code-Editor am Beispiel
Das Fallbeispiel – der DVD-Hüllen-Generator »Covers«
Das »Pflichtenheft« von Covers
Erstellen eines neuen Projekts
Gestalten von Formularen mit dem Windows Forms-Designer
Positionieren von Steuerelementen
Ausrichtungslinien (Guidelines) und die Margin/Padding-Eigenschaften von Steuerelementen
Angleichen von Größe und Position von Steuerelementen
Selektieren mehrerer Steuerelemente und Bestimmen des Referenzsteuerelements
Häufige Arbeiten an Steuerelementen mit Smarttags erledigen
Dynamische Anordnung von Steuerelementen zur Laufzeit
Verankern von Steuerelementen mit der Anchor-Eigenschaft
Proportionales Anpassen von Steuerelementen an Formulargrößenänderungen mit dem TableLayoutPanel
Einstellen der vorhandenen Spalten und Zeilen des TableLayoutPanel
Anordnen von Steuerelementen in den Zellen eines TableLayoutPanel
Verankern von Steuerelementen im TableLayoutPanel
Verbinden von Zeilen oder Spalten des TableLayoutPanel
Automatisches Scrollen von Steuerelementen in Containern
Selektieren von Steuerelementen, die Sie mit der Maus nicht erreichen
Selektieren von Steuerelementen mit dem Eigenschaftenfenster
Festlegen der Tabulatorreihenfolge (Aktivierreihenfolge) von Steuerelementen
Über die Eigenschaften Name, Text und Caption
Schnellzugriffstasten durch die Text-Eigenschaft bestimmen
Einrichten von Bestätigungs- und Abbrechen-Funktionalitäten für Schaltflächen in Formularen
Hinzufügen neuer Formulare zu einem Projekt
Wie geht’s weiter?
Namensgebungskonventionen für Steuerelemente in diesem Buch
Funktionen zum Layouten von Steuerelementen im Designer
Tastaturkürzel für die Platzierung von Steuerelementen
Der Code-Editor
Die Darstellung im Editor auf die richtige Größe einstellen
Viele Wege führen zum Code-Editor
IntelliSense – Ihr stärkstes Zugpferd im Coding-Stall
Filtern von Elementen in der Vervollständigungsliste
Anzeigen der Parameterinfo von Elementen
Mehrzeilige Befehlszeilen, impliziter Zeilenumbruch und die Parameterinfo
Automatische Vervollständigung von Struktur-Schlüsselwörtern und Codeeinrückung
Fehlererkennung im Code-Editor
Einfache Fehlerkennzeichnung im Editor
Editorunterstützung bei Fehlern zur Laufzeit
Fehlerverbesserungsvorschläge des Editors bei Typkonflikten – erzwungene Typsicherheit
XML-Dokumentationskommentare für IntelliSense bei eigenen Objekten und Klassen
Hinzufügen neuer Codedateien zum Projekt
Code umgestalten (Refactoring)
Code umgestalten (Klassennamenanpassung) beim Umbenennen von Projektdateien oder Objekteigenschaften
Die Bibliothek der Codeausschnitte (Code Snippets Library)
Einfügen von Codeausschnitten mithilfe von Verknüpfungen
Speichern von Anwendungseinstellungen mit dem Settings-Designer
Einrichten von Settings-Variablen
Verwenden von Settings-Variablen im Code
Verknüpfen von Settings-Werten mit Formular- oder Steuerelementeigenschaften
Und wo werden die Settings-Daten abgelegt?
Herzlichen Glückwunsch!
6. Einführung in Windows Presentation Foundation
Was ist Windows Presentation Foundation?
Was ist so neu an WPF?
25 Jahre Windows, 25 Jahre gemalte Schaltflächen
Spielende Protagonisten
Wie WPF Designer und Entwickler zusammenbringt
XAML: Extensible Application Markup Language
Ereignisbehandlungsroutinen in WPF und Visual Basic
Die XAML-Syntax im Überblick
ImageResizer – das praktische WPF-Beispiel
Definieren von Grid-Spalten und -Zeilen zum Anordnen von Steuerelementen
»Begin at the beginning«, the King said very gravely, »and go on till you come to the end: then stop!«
Nachträgliches Einfügen einer neuen Zeile
Einmal das Hauptmenü, bitte!
Steuerelemente mit Ereignissen verknüpfen
Laden der Standardeinstellungen
Organisation ist alles: den Ausgabepfad frei definierbar machen
Letzte Vorbereitungen treffen: Bilder hinzufügen
Endspurt: das Verkleinern der Bilder
Hinzufügen eines Projekts zu einer bestehenden Projektmappe und Setzen der Verweise
Das Herzstück des Programms: die Funktionalität des Verkleinerns
Von der Holz- zur Businessklasse
7. Die essenziellen .NET-Datentypen
Numerische Datentypen
Numerische Datentypen deklarieren und definieren
Delegation numerischer Berechnungen an den Prozessor
Hinweis zur CLS-Konformität
Die numerischen Datentypen auf einen Blick
Byte
SByte
Short
UShort
Integer
UInteger
Long
ULong
Single
Double
Decimal
Tabellarische Zusammenfassung der numerischen Datentypen
Rundungsfehler bei der Verwendung von Single und Double
Besondere Funktionen, die für alle numerischen Datentypen gelten
Zeichenketten in Werte wandeln und Vermeiden von kulturabhängigen Fehlern
Performance- und Rundungs-Problematik beim Konvertieren von Fließkomma- zu Integerwerten
Ermitteln von minimal und maximal darstellbarem Wert eines numerischen Typs
Spezielle Funktionen der Fließkommatypen
Unendlich (Infinity)
Keine Zahl (NaN, Not a Number)
Versuchte Umwandlungen mit TryParse
Spezielle Funktionen des Wertetyps Decimal
Der Datentyp Char
Der Datentyp String
Strings – gestern und heute
Strings deklarieren und definieren
Prüfen, ob ein String »leer« ist – String.IsNullOrWhiteSpace
Automatische Zeichenwiederholungen durch den String-Konstruktor (String$-Funktionalität aus VBA)
Einem String Zeichenketten mit Sonderzeichen zuweisen
Speicherbedarf von Strings
Strings sind unveränderlich
Speicheroptimierung von Strings durch .NET Framework
Ermitteln der String-Länge
Ermitteln von Teilen eines Strings oder eines einzelnen Zeichens
Angleichen von String-Längen
Suchen und Ersetzen
Trimmen von Strings
Algorithmisches Auflösen eines Strings in Teile
Iterieren durch einen String
StringBuilder vs. String – wenn es auf Geschwindigkeit ankommt
Performance-Vergleich: String gegen StringBuilder
Der Datentyp Boolean
Konvertieren von und in numerische Datentypen
Konvertierung von und in Strings
Der Datentyp Date
Rechnen mit Zeiten und Datumswerten – TimeSpan
Bibliothek mit brauchbaren Datumsrechenfunktionen
Zeichenketten in Datumswerte wandeln
Umwandlungen mit Parse
Umwandlungen mit ParseExact
.NET-Äquivalente primitiver Datentypen
GUIDs
Konstanten und Nur-Lesen-Felder (Read-only-Feldvariablen)
Konstanten
Nur-Lesen-Felder
II. Objektorientiertes Programmieren
8. Einführung in die objektorientierte Programmierung
Einführung in Klassen und Objekte
Miniadresso – die prozedurale Variante
9. Klassentreffen
Was ist eine Klasse?
Klassen mit New instanziieren
Öffentliche Felder oder Eigenschaften beim Instanziieren initialisieren
New oder nicht New – wieso es sich bei Objekten um Verweistypen handelt
Nothing
Nothing als Null-Referenz-Zeiger
Nothing in Zuweisungen für Standardwerte
Klassen verwenden
Wertetypen
Wertetypen mit Structure erstellen
Wertetypen durch Zuweisung klonen
10. Klassencode entwickeln
Eigenschaften
Zuweisen von Eigenschaften
Ermitteln von Eigenschaften
Viel Tipparbeit sparen mit automatisch implementierten Eigenschaften
Vorbelegen von Eigenschaftswerten von automatisch implementierten Eigenschaften
Eigenschaften mit Parametern
Default-Eigenschaften (Standardeigenschaften)
Öffentliche Variablen oder Eigenschaften – eine Glaubensfrage?
Der Konstruktor einer Klasse – bestimmen, was bei New passiert
Parametrisierte Konstruktoren
Hat jede Klasse einen Konstruktor?
Klassenmethoden mit Sub und Function
Überladen von Methoden, Konstruktoren und Eigenschaften
Methodenüberladung und optionale Parameter
Anwenden von optionalen Parametern
Gegenseitiges Aufrufen von überladenen Methoden
Gegenseitiges Aufrufen von überladenen Konstruktoren
Überladen von Eigenschaftenprozeduren mit Parametern
Zugriffsmodifizierer für Klassen, Methoden und Eigenschaften – Gültigkeitsbereiche definieren
Zugriffsmodifizierer bei Klassen
Zugriffsmodifizierer bei Prozeduren (Subs, Functions, Properties)
Zugriffsmodifizierer bei Variablen
Unterschiedliche Zugriffsmodifizierer für Eigenschaften-Accessors
Statische Elemente
Statische Methoden
Statische Eigenschaften
Über mehrere Codedateien aufgeteilter Klassencode – das Partial-Schlüsselwort
Partieller Klassencode bei Methoden und Eigenschaften
11. Vererben von Klassen und Polymorphie
Wiederverwendbarkeit von Klassen durch Vererbung (Inheritance)
Initialisierung von Feldvariablen bei Klassen ohne Standardkonstruktoren
Überschreiben von Methoden und Eigenschaften
Überschreiben vorhandener Methoden und Eigenschaften von .NET Framework-Klassen
Polymorphie
Ein erstes einfaches Beispiel zur Polymorphie
Polymorphie in der Praxis
Polymorphie und der Gebrauch von Me, MyClass und MyBase
Abstrakte Klassen und virtuelle Prozeduren
Eine Klasse mit MustInherit als abstrakt deklarieren
Eine Methode oder Eigenschaft einer abstrakten Klasse mit MustOverride als virtuell deklarieren
Schnittstellen (Interfaces)
Unterstützung bei abstrakten Klassen und Schnittstellen durch den Editor
Die Tücken der automatischen Codeergänzung bei Schnittstellen oder abstrakten Klassen
Editorunterstützung bei abstrakten Klassen
Schnittstellen, die Schnittstellen implementieren
Einbinden mehrerer Schnittstellen in eine Klasse
Die Methoden und Eigenschaften von Object
Ausgeben der String-Repräsentation eines Objekts mit ToString
Prüfen auf Gleichheit von Objekten mit Object.Equals oder dem Is/IsNot-Operator
Equals, Is und IsNot im praktischen Einsatz
Übersicht über die Eigenschaften und Methoden von Object
Shadowing (Überschatten) von Klassenprozeduren
Shadows als Unterbrecher der Klassenhierarchie
Sonderform »Modul« in Visual Basic
Singleton-Klassen und Klassen, die sich selbst instanziieren
12. Entwickeln von Wertetypen
Erstellen von Wertetypen mit Structure am praktischen Beispiel
Verhalten der Parameterübergabe mit ByVal und ByRef steuern
Konstruktoren und Standardinstanziierungen von Wertetypen
Keine Code für Standardkonstruktoren bei Wertetypen
Wann Werte-, wann Referenztypen verwenden?
Gezieltes Zuweisen von Speicherbereichen für Strukturmember mit den StructLayout- und FieldOffset-Attributen
13. Typenumwandlung (Type Casting) und Boxing von Wertetypen
Konvertieren von primitiven Typen
Konvertieren von und in Zeichenketten (Strings)
Konvertieren von Strings mit den Parse- und ParseExact-Methoden
Konvertieren in Strings mit der ToString-Methode
Abfangen von fehlschlagenden Typkonvertierungen mit TryParse oder Ausnahmehandlern
Casten von Referenztypen mit DirectCast
TryCast – herausfinden, ob gecastet werden kann
IsAssignableFrom – Test auf erlaubtes Casting ohne zusätzliche Objektvariable
Boxing von Wertetypen und primitiven Typen
Übrigens: Was DirectCast nicht kann
Wann wird und wann wird nicht geboxt?
Wertänderung von durch Schnittstellen geboxten Wertetypen
14. Beerdigen von Objekten – Dispose, Finalize und der Garbage Collector
Der Garbage Collector – die Müllabfuhr in .NET
Wie der Garbage Collector arbeitet
Die Geschwindigkeit der Objektbereitstellung
Finalize
Wann Finalize nicht stattfindet
Dispose
Implementierung eines hochauflösenden Timers als IDisposable
Unterstützung durch den Visual Basic-Editor beim Einfügen eines Disposable-Patterns
Gezieltes Freigeben von Objekten mit Using
15. Eigene Operatoren für benutzerdefinierte Typen
Einführung in Operatorenprozeduren
Vorbereitung einer Struktur oder Klasse für Operatorenprozeduren
Implementierung von Operatoren
Überladen von Operatorenprozeduren
Implementierung von Vergleichsoperatoren
Implementierung von Typkonvertierungsoperatoren mit dem Operator CType
Implementieren von Wahr- und Falsch-Auswertungsoperatoren
Problembehandlungen bei Operatorenprozeduren
Aufgepasst bei der Verwendung von Referenztypen
Übersicht der implementierbaren Operatoren
16. Ereignis, Delegaten und Lambda-Ausdrücke
Konsumieren von Ereignissen mit WithEvents und Handles
Auslösen von Ereignissen
Events können nicht vererbt werden – der Umweg über Onxxx
Ereignisparameter zur Verfügung stellen
Die Quelle des Ereignisses: Sender
Nähere Informationen zum Ereignis: EventArgs
Delegaten
Delegaten an Methoden übergeben
Lambda-Ausdrücke
Einzeilige Ausdrucks- und mehrzeilige Anweisungs-Lambdas
Dynamisches Anbinden von Ereignissen mit AddHandler
Implementieren eigener Event Handler
17. Enums
Bestimmung der Werte der Aufzählungselemente
Dubletten sind erlaubt!
Bestimmung der Typen der Aufzählungselemente
Ermitteln des Elementtyps zur Laufzeit
Konvertieren von Enums
In Zahlenwerte umwandeln und aus Werten definieren
In Strings umwandeln und aus Strings definieren
Flags-Enums (Flags-Aufzählungen)
Abfrage von Flags-Aufzählungen
18. Generics (Generika) und generische Auflistungen
Einführung
Generics: Verwenden einer Codebasis für verschiedene Typen
Lösungsansätze
Standardisierung der Codebasis eines Typs durch den Einsatz von Generics
Beschränkungen (Constraints)
Beschränkungen für generische Typen auf eine bestimmte Basisklasse
Beschränkungen auf Klassen, die bestimmte Schnittstellen implementieren
Beschränkungen auf Klassen, die über einen Standardkonstruktor verfügen
Beschränkungen auf Wertetypen
Kombinieren von Beschränkungen und Bestimmen mehrerer Typparameter
19. Typen für Fortgeschrittene
Nullable Wertetypen
Aufpassen beim Umgang mit booleschen Ausdrücken auf Basis von Nullables!
Besonderheiten bei Nullable beim Boxen
Unterschied zwischen Nothing und Nothing als Standardwert
Generische Delegaten
Action(Of T)
Function(Of T)
Tuple(Of T)
Typvarianz
Erweiterungsmethoden
Das Haupteinsatzgebiet von Erweiterungsmethoden
Erweiterungsmethoden zur Vereinfachung von Auflistungsinitialisieren
III. Programmieren von und mit Datenstrukturen aus .NET Framework
20. Arrays und Auflistungen
Grundsätzliches zu Arrays
Initialisierung von Arrays
Änderung der Array-Dimensionen zur Laufzeit
Die Magie von ReDim
Wertevorbelegung von Array-Elementen im Code
Typrückschluss bei der Verwendung von Array-Initialisierern
Dominierende Typen
Mehrdimensionale und verschachtelte Arrays
Verschachtelte Arrays
Die wichtigsten Eigenschaften und Methoden von Arrays
Anzahl der Elemente eines Arrays ermitteln mit Length
Sortieren von Arrays mit Array.Sort
Umdrehen der Array-Anordnung mit Array.Reverse
Durchsuchen eines sortierten Arrays mit Array.BinarySearch
Implementierung von Sort und BinarySearch für eigene Klassen
Implementieren der Vergleichsfähigkeit einer Klasse durch IComparable
Verwenden von Lambdas mit Arrays-Methoden
Enumeratoren
Benutzerdefinierte Enumeratoren durch Implementieren von IEnumerable
Grundsätzliches zu Auflistungen (Collections)
Initialisierung von Auflistungen
Vereinfachung von Auflistungsinitialisierern durch Erweiterungsmethoden
Wichtige Auflistungen von .NET Framework, die Sie kennen sollten
ArrayList – universelle Ablage für Objekte
Typsichere Auflistungen auf Basis von CollectionBase
Hashtables – für das Nachschlagen von Objekten
Anwenden von Hashtables
Verarbeitungsgeschwindigkeiten von Hashtables
Wieso die Zugriffszeit auf Hashtable-Elemente nahezu konstant ist ...
... und wieso Sie das wissen sollten!
Verwenden eigener Klassen als Schlüssel (Key)
Schlüssel müssen unveränderlich sein!
Enumerieren von Datenelementen in einer Hashtable
DictionaryBase
Queue – Warteschlangen im FIFO-Prinzip
Stack – Stapelverarbeitung im LIFO-Prinzip
SortedList – Elemente ständig sortiert halten
Generische Auflistungen (Generic Collections)
List(Of )-Auflistungen und Lambda-Ausdrücke
ForEach und der generische Action-Delegat
Sort und der generische Comparison-Delegat
Find und der generische Predicate-Delegat
KeyedCollection – Schlüssel/Wörterbuch-Auflistung mit zusätzlichen Index-Abrufen
Elementverkettungen mit LinkedList(Of )
21. Serialisierung
Einführung in Serialisierungstechniken
Serialisieren mit SoapFormatter und BinaryFormatter
Universeller SOAP-Datei-De-/Serializer
Universeller Binary-Datei-De-/Serializer
Funktionsweise der Datei-Serializer-Klassen
Flaches und tiefes Klonen von Objekten
Universelle DeepClone-Methode
Serialisieren von Objekten mit Zirkelverweisen
Serialisierung von Objekten unterschiedlicher Versionen beim Einsatz von BinaryFormatter- oder SoapFormatter-Klassen
XML-Serialisierung
Prüfen der Versionsunabhängigkeit der XML-Datei
Serialisierungsfehler bei KeyedCollection
22. Attribute und Reflection
Genereller Umgang mit Attributen
Einsatz von Attributen am Beispiel von ObsoleteAttribute
Die speziell in Visual Basic verwendeten Attribute
Einführung in Reflection
Die Type-Klasse als Ausgangspunkt für alle Typenuntersuchungen
Klassenanalysefunktionen, die ein Type-Objekt bereitstellt
Objekthierarchie von MemberInfo und Casten in den spezifischen Info-Typ
Ermitteln von Eigenschaftswerten über PropertyInfo zur Laufzeit
Erstellung benutzerdefinierter Attribute und deren Erkennen zur Laufzeit
Ermitteln von benutzerdefinierten Attributen zur Laufzeit
IV. Entwicklungsvereinfachungen in Visual Basic 2010
23. My als Abkürzung zu Framework-Funktionen verwenden
Die Visual Basic 2010-Vereinfachungen am Beispiel DotNetCopy
DotNetCopy mit /Autostart und /Silent-Optionen
Die prinzipielle Funktionsweise von DotNetCopy
Der My-Namespace
Formulare ohne Instanziierung aufrufen
Auslesen der Befehlszeilenargumente mit My.Application.CommandLineArgs
Gezieltes Zugreifen auf Ressourcen mit My.Resources
Anlegen und Verwalten von Ressourcenelementen
Abrufen von Ressourcen mit My.Resources
Internationalisieren von Anwendungen mithilfe von Ressourcendateien und dem My-Namespace
Vereinfachtes Durchführen von Dateioperationen mit My.Computer.FileSystem
Verwenden von Anwendungseinstellungen mit My.Settings
Speichern von Anwendungseinstellungen mit dem Bereich Benutzer
24. Das Anwendungsframework
Die Optionen des Anwendungsframeworks
Windows XP Look and Feel für eigene Windows-Anwendungen – Visuelle XP-Stile aktivieren
Verhindern, dass Ihre Anwendung mehrfach gestartet wird – Einzelinstanzanwendung erstellen
Eigene Einstellungen beim Herunterfahren automatisch sichern – My.Settings beim Herunterfahren speichern
Bestimmen, welcher Benutzer-Authentifizierungsmodus verwendet wird
Festlegen, wann eine Anwendung »zu Ende« ist – Modus für das Herunterfahren
Einen Splash-Dialog beim Starten von komplexen Anwendungen anzeigen – Begrüßungsbildschirm
Eine Codedatei implementieren, die Anwendungsereignisse (Starten, Beenden, Netzwerkzustand, generelle Fehler) behandelt
V. Language Integrated Query – LINQ
25. Einführung in Language integrated Query (LINQ)
Wie »geht« LINQ prinzipiell
Erweiterungsmethoden als Basis für LINQ
Die Where-Methode
Die Select-Methode
Anonyme Typen
Typrückschluss für generische Typparameter
Kombinieren von LINQ-Erweiterungsmethoden
Vereinfachte Anwendung von LINQ – Erweiterungsmethoden mit der LINQ-Abfragesyntax
26. LINQ to Objects
Einführung in LINQ to Objects
Der Aufbau einer LINQ-Abfrage
Performance von LINQ-Abfragen
Kombinieren und verzögertes Ausführen von LINQ-Abfragen
Parallelisieren von LINQ-Abfragen mit AsParallel
Faustregeln für das Erstellen von LINQ-Abfragen
Kaskadierte Abfragen
Gezieltes Auslösen von Abfragen mit ToArray oder ToList
Verbinden mehrerer Auflistungen zu einer neuen
Implizite Verknüpfung von Auflistungen
Explizite Auflistungsverknüpfung mit Join
Gruppieren von Auflistungen
Gruppieren von Listen aus mehreren Auflistungen
Group Join
Aggregatfunktionen
Zurückliefern mehrerer verschiedener Aggregierungen
Kombinieren von gruppierten Abfragen und Aggregatfunktionen
27. LINQ to XML
Einführung in LINQ to XML
XML-Dokumente verarbeiten – damals und heute
XML-Literale – XML direkt im Code ablegen
Einbetten von Ausdrücken in XML-Literalen
Erstellen von XML mithilfe von LINQ
Abfragen von XML-Dokumenten mit LINQ to XML
IntelliSense-Unterstützung für LINQ To XML-Abfragen
Verwendung von Präfixen (fuhrpark und artikel)
28. LINQ to Entities – Programmieren mit Entity Framework
Voraussetzungen zum Test der Beispiele
Download und Installation von SQL Server 2008 Express Edition with Advanced Services
Installation der AdventureWorks Beispieldatenbanken
Prinzipielle Funktionsweise eines Entity Data Model (EDM)
LINQ to Entities – ein erstes Praxisbeispiel
Nachträgliches Ändern des Entitätscontainernamens
Abfrage von Daten eines Entitätsmodells
Abfrage von Daten mit LINQ to Entities-Abfragen
Wie Abfragen zum Datenprovider gelangen – Entity SQL (eSQL)
Anpassen des Namens der Entitätenmenge
Generierte SQL-Anweisungen unter die Lupe nehmen
Lazy Loading und Eager Loading in Entity Framework
Daten beim Lazy Loading manuell nachladen
Eager Loading für bestimmte Relationen verwenden
Anonymisierungsvermeidung bei Abfragen in verknüpften Tabellen
Kompilierte Abfragen
Daten verändern, speichern, einfügen und löschen
Datenänderungen mit SaveChanges an die Datenbank übermitteln
Einfügen von verknüpften Daten in Datentabellen
Daten aus Tabellen löschen
Concurrency-Checks (Schreibkonfliktprüfungen)
Datenmodell aus Datenbank aktualisieren
Model First-Design
Vererbung im konzeptionellen Datenmodell
T-SQL-Befehle im Objektkontext direkt ausführen
Arbeiten mit gespeicherten Prozeduren
Ausblick
VI. Anwendungsausführung parallelisieren
29. Programmieren mit der Task Parallel Library (TPL)
Einführung in die Technik des Threading
Die verschiedenen Möglichkeiten, Threads zu starten, im Schnelldurchlauf
Verwenden der Thread-Klasse
Hintergrundthreads werden stets mit der Hauptanwendung beendet
Vereinfachung des Startens eines Threads mit mehrzeiligen Anwendungs-Lambdas
Asynchrones Aufrufen von Delegaten
Verwenden der Task-Klasse
Direktes Verwenden eines Thread des Threadpools
Zugriff auf Steuerelemente von Threads
Parallelisierung mit Parallel.For und Parallel.ForEach
Parallel.For
Beispiel: Parallelisieren des Image-Resizers aus Kapitel 6
Parallel.ForEach
CancellationToken – Exit For für Parallel.For und Parallel.ForEach
Vermeiden von Fehlern beim Parallelisieren von Schleifen
Arbeiten mit Tasks
Warten auf das Ende von Tasks – WaitOne, WaitAny und WaitAll
Task mit und ohne Rückgabeparameter
Verhindern, dass die Benutzeroberfläche beim Warten auf Tasks blockiert
Vorzeitiges Abbrechen von Tasks mit CancellationToken
Threads synchronisieren
Synchronisieren von Threads mit SyncLock
Mehr Flexibilität in kritischen Abschnitten mit der Monitor-Klasse
Monitor – Wait – Pulse
Synchronisieren von beschränkten Ressourcen mit Mutex
Wie geht es weiter?
Stichwortverzeichnis
Impressum
← Prev
Back
Next →
← Prev
Back
Next →