Async await

Wie funktionier await?

Ein Thread ist wie eine Pipeline, die einen bestimmten Code in die CPU gibt.

Mal angenommen Thread 1 (Ui Thread) will etwas downloaden und dann auf der UI darstellen. Während des Http Requests ist die Ui gesperrt. Weil der Thread 1 darauf wartet, bis der Server geantwortet hat.

Mit await wird ein freier Thread genommen und der macht den Request. Thread 1 wird nun freigegeben. Der Benutzer kann z.B. weiter die Ui wie gewohnt nutzen.

Wenn Thread 2 fertig ist, sagt er, ich bin fertig und möchte zu dem Thread zurück kehren, der ihn erzeugt hat: Thread 1.

Thread 1 übernimmt und der Codeblock wird weiter ausgeführt.

Wenn es nun egal ist, welcher Thread den Codeblock weiter ausführen soll, kann man
[crayon-5dab6d41a1df0887653578/]
nutzen.

.Result sollte nicht genutzt werden, da im Exceptio Stacktrace Fehlermeldungen wie “MoveNext()” erscheinen. Diese kommen aus der kompilierten Statemachine. Besser ist es
[crayon-5dab6d41a1dfd291229246/]
zu nutzen, da dann unser Typ und unsere Exception zurück gegeben werden.

 

 




Handlebars render Funktion wie bei Mustache

[crayon-5dab6d41a34f1445906379/]
 




Eigene Adblock uBlock Filterliste

Surface 2019-05-19
[crayon-5dab6d41a39d9623931798/]
 




Zahl als String mit 2 Nachkommastellen und mit Punkt als Tausendertrennzeichen

[crayon-5dab6d41a3dc0118095942/]
 




Query für Rekursives löschen

DECLARE @ObjectID UNIQUEIDENTIFIER = '18AAF1E3-FBFC-4BB1-957A-60AD7EFC0276' 
 WITH RowsToDelete AS (
     SELECT [ID]
     FROM [Security].[PermissionLevel]
     WHERE [ID] = @ObjectID

UNION ALL

SELECT [Child].[ID]
FROM [Security].[PermissionLevel] Child 
INNER JOIN RowsToDelete Parent ON Parent.[ID] = [Child].[ParentID]
)
 DELETE FROM [Security].[PermissionLevel]
 FROM [Security].[PermissionLevel] h 
 INNER JOIN RowsToDelete d on h.ID = d.ID
 go




Query um eine UI Tabelle darzustellen. Mit Filter pro Spalte, Sortierung pro Spalte, variablen Paging und Anzahl Zeilen ohne Filterung

[crayon-5dab6d41a419f518366772/]
 




Spalteninformationen zu Prozeduren anzeigen

Der Profiler ist schon eine tolle Sache. Wenn man im SQL Management Studio eine Prozedur ausklappt, dann macht das Management Studio folgende Abfrage um die Informationen auszulesen:
[crayon-5dab6d41a4572243191649/]
 




Pokemon Tower Defense Tricks

// Letzte Trades

http://www.ptdtrading.com/latestTrades.php?whichProfile=1

JQuery hinzufügen dynamisch
[crayon-5dab6d41a4a03828302311/]
Blendet alle Regulären Pokemon aus
[crayon-5dab6d41a4a09506272363/]
Blendet Pidgeot aus
[crayon-5dab6d41a4a0b490859008/]
[crayon-5dab6d41a4a0e953510400/]
 




Alle Country Codes als SQL Query

Einfach eine Konsolenanwendung erstellen und folgendes Snippet reinkopieren:


[crayon-5dab6d41a5f42671374029/]
Folgender resultCultures Query wird generiert:
[crayon-5dab6d41a5f4d392997202/]
bzw. Folgender resultRegions Query wird generiert:
[crayon-5dab6d41a5faf936105422/]
 




Eintrag in AppSettings zur Laufzeit ändern

  1. Zunächst benötigt man eine Referenz auf “System.Configuration”. Diese ist per Standard nicht in einem Projekt eingebunden
  2. Man muss eine AppSettings.config erstellen, die in etwa so aussieht:
    [crayon-5dab6d41a789d748804263/]
  3. Anschließend noch eine Hilfsfunktion:
    [crayon-5dab6d41a78a5562804731/]
  4. Die man ausführen kann:
    [crayon-5dab6d41a78a8861604267/]
  5. Auslesen kann man die AppSettings ganz einfach mit
    [crayon-5dab6d41a78aa577940422/]