/ / Obtenir des erreurs de compilation - c #

Obtenir des erreurs de compilation - c #

Dans le code ci-dessous:

objStockcheck = async ObjPrice.getprice();
objStockcheck = async ObjAvail.getAvailability();

J'ai besoin d'async dans les deux lignes mais cela montre l'erreur suivante:

Erreur CS0103 Le nom "async" n'existe pas dans le contexte actuel de ligne 1 et 2.

Bien que je mette un point-virgule aux lignes 1 et 2, il montre ce qui suit:

Erreur CS1002; service de démonstration prévu sur les lignes 1 et 2.

Merci d'avance.

Réponses:

0 pour la réponse № 1

Comme @Timothy Groote l'a dit, difficile sans tropcontexte, mais je dirais que le mot clé async est censé être sur la déclaration de votre méthode. Lorsque vous appelez votre méthode, vous devez utiliser le mot clé "wait"


0 pour la réponse № 2

Comme @Dev l'a suggéré, ce n'est pas comme cela que vous utilisez async.

vous devez d'abord déclarer une méthode asynchrone. Et ensuite, utilisez le mot-clé wait pour attendre que le résultat ou l'appel se termine.

private async void PostToServer(Model Data)
{
//Do complex task without returning anything.
//Like posting data to server.
//...Do something with model
await context.SaveAsync();
}

async Task<ObjPrice> getprice()
{
//Do complex task and return result.
//Like waiting for some other event to update the price.
return await WaitForPriceChangeAsync();
}

public async Task Bar()
{
var objStockcheck = await WaitForPriceUpdate();
await PostToServer();
}

En savoir plus sur async-wait ici:

https://docs.microsoft.com/en-us/dotnet/csharp/async

Comment et quand utiliser `async` et` wait`

Modifier: Création de tâche asynchrone

private async Task<string> RandomTaskAsync()
{
var result=await Task.Run<String>(=>
{
//Doing any task here will run in asynchronously
return HugeComputing();
});
return result;
}

Cette méthode peut être attendue dans d'autres appels de méthode.

En outre, comme suggéré par Jon Hanna, utilisez async void uniquement pour les gestionnaires d'événements (car il n'y a pas d'alternative dans ce cas). Utiliser autrement enfreint le principe TAP.