différence entre Asynchrone et Synchrone .net 4.5

Au cours de ma lecture sur la Programmation Asynchrone .Net 4.5 async et await mots-clés
J'ai lu Ici le paragraphe suivant

De Traitement Des Requêtes Asynchrones

Dans les applications web qui voit un grand nombre de requêtes simultanées à
start-up ou a un éclaté de la charge (d'où la simultanéité augmente soudainement),
faire ces appels aux services web asynchrones va augmenter la
la réactivité de votre application. Une requête asynchrone prend
la même quantité de temps pour les processus synchrone demande. Pour
exemple, si une demande qui fait un appel de service web qui nécessite deux
secondes pour terminer, la demande prend deux secondes s'il est
réalisées de manière synchrone ou asynchrone
. Cependant, lors d'une
appel asynchrone, un thread n'est pas bloqué de répondre à d'autres
les demandes pendant qu'il attend la première demande de remplir. Par conséquent,
des requêtes asynchrones empêcher demande de files d'attente et le pool de threads de croissance
quand il y a beaucoup de demandes simultanées qui invoquent la longue
les opérations.

pour les mots en gras, je ne pouvais pas comprendre comment Une requête asynchrone prend la même quantité de temps pour le processus synchrone demande?

Par exemple:

public async Task MyMethod()
{
    Task<int> longRunningTask = LongRunningOperation();
    //indeed you can do independent to the int result work here 

    //and now we call await on the task 
    int result = await longRunningTask;
    //use the result 
    Console.WriteLine(result);
}

public async Task<int> LongRunningOperation() //assume we return an int from this long running operation 
{
    await Task.Delay(1000); //1 seconds delay
    return 1;
}

Ce que je comprends que LongRunningOperation() commence l'exécution de la première ligne de l'appel ici Task<int> longRunningTask = LongRunningOperation(); et retourne la valeur une fois l'appel await,
donc, de mon point de vue code asynchrone plus vite que synchrone, c'est bien cela?

Une autre question:

Ce que je comprends que le thread principal de travail sur l'exécution de MyMethod() pas bloqué dans l'attente d' LongRunningOperation() être accompli, mais il revient à pool de threads pour servir une autre demande. donc, il y a un autre thread attribué à LongRunningOperation(); pour l'exécuter?

Si oui quelle est donc la différence entre la Programmation Asynchrone et le Multithreading Programmation ?

Mise à jour:

disons que le code devient comme ça:

public async Task MyMethod()
    {
        Task<int> longRunningTask = LongRunningOperation();
        //indeed you can do independent to the int result work here 
        DoIndependentWork();
        //and now we call await on the task 
        int result = await longRunningTask;
        //use the result 
        Console.WriteLine(result);
    }

    public async Task<int> LongRunningOperation() //assume we return an int from this long running operation 
    {
        DoSomeWorkNeedsExecution();
        await Task.Delay(1000); //1 seconds delay
        return 1;
    }

Dans ce cas, LongRunningOperation() être exécuté par un autre thread pendant DoIndependentWork() exécution?

Il vous manque quelques bases importantes. Difficile de donner une bonne réponse. Vous avez besoin d'un tutoriel. Découvrez ce qui attend les ne.
Il va toujours prendre la même quantité de temps pour effectuer le travail, le code asynchrone simplement exécute le travail dans un ordre différent. Le truc qui prend plus de temps peut obtenir déchargées à un autre thread. De sorte que la tâche prendra encore du temps, mais l'application n'est tout simplement pas attendre pour la tâche à effectuer.

OriginalL'auteur Abraham Josef | 2015-01-02