2016-08-03 35 views
-3

Was ist eine Synchronisationsmethode und was ist eine asynchrone Methode? Was ist der Unterschied zwischen Sync- und Async-Methoden? Wann muss ich die sync- oder async-Methode verwenden? Ich frage diese Fragen, weil ich nicht verstehe:Was ist eine synchrone und asynchrone Methode?

public async void ReadData(filepath) 
{ 
    CreateDoc("hello"); //<------ Why I can't do that ? 
} 

public void CreateDoc(string astring) 
{ 
    Debug.WriteLine(astring); 
} 

Und warum kann ich das nicht tun? :

Ich stelle diese Frage, weil ich nicht wirklich klare Erklärungen im Web finde

+0

Ich gehe davon gefunden Sie * etwas *, also was hast du bisher entdeckt? Worum fragst du eigentlich hier? der unterschied zwischen a/sync oder wie die fehler in ihrem code zu beheben – Sayse

+2

Ich vermute die eigentliche frage ist "warum funktioniert meine async void methode nicht". Weil sie immer nur für Event-Handler verwendet werden sollten. Viele und viele Beiträge dazu schon, wir brauchen keinen anderen mehr. Danke, dass du versucht hast beizutragen. –

+0

Hans, es gibt viele Einsatzmöglichkeiten neben Eventhandlern. –

Antwort

0

Funktionen und andere Operationen arbeiten auf Ein Thread ist nur eine Folge von Operationen, aber Sie können mehrere Threads gleichzeitig haben. In gewisser Hinsicht ist der wichtigste Thread der Hauptthread, der häufig als UI-Thread bezeichnet wird, da hier die Benutzeroberfläche gesteuert wird.

Bei langwierigen Vorgängen (wie dem Abrufen von Daten aus dem Internet) möchten Sie nicht auf diese Daten im Hauptthread warten, da Sie diesen Thread daran hindern, auf Benutzereingaben zu reagieren (z. B. auf Abbrechen klicken) button)

Um dies zu lösen, setzen Sie die lange laufende Aufgabe auf einen eigenen Thread. C# macht das einfach, Sie verwenden nur das Schlüsselwort await, und die Funktion wartet auf den Abschluss der Arbeit, ohne den Hauptthread zu blockieren.

Das Wort erwarten ist ein "Schlüsselwort" - seine Verwendung ist für diesen Zweck reserviert. Um zu signalisieren, dass eine Funktion eine Wartezeit hat, müssen Sie die Funktion mit async markieren. Wenn Sie es async markieren, erwartet der Compiler mindestens eine Wartezeit.

Ihre Beispiele:

public async void ReadData(filepath) 
{ 
    CreateDoc("hello"); //<------ Why I can't do that ? 
} 

Sie haben diese Methode Asynchron markiert, aber Sie haben noch keine erwartet

this helps

jesse

0
  1. Synchronization bedeutet, dass zwei oder mehr Operationen in einem gleichen Kontext (Gewinden) ausgeführt werden, so dass sie blockieren können.
  2. Synchronisation bedeutet, dass zwei oder mehr Operationen sequenziell ablaufen.
  3. Asynchron bedeutet, dass zwei oder mehr Operationen in verschiedenen Kontexten (Thread) ausgeführt werden, so dass sie gleichzeitig ausgeführt werden können und nicht gegenseitig blockieren.
  4. Asynchron bedeutet, dass zwei oder mehr Operationen asynchron ablaufen.

Sie mehr auf den folgenden Thread lesen: "Themen" http://www.codeproject.com/Articles/127660/What-are-actually-synchronous-asynchronous-operati