/ / Obteniendo errores de compilación - c #

Obteniendo errores de compilación - c #

En el siguiente código:

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

Necesito async en ambas líneas pero muestra el siguiente error:

Error CS0103 El nombre "async" no existe en el contexto actual en líneas 1 y 2.

Aunque puse un punto y coma en las líneas 1 y 2, muestra lo siguiente:

Error CS1002; Se espera demoservice en línea 1 y 2.

Gracias por adelantado.

Respuestas

0 para la respuesta № 1

Como dijo @Timothy Groote, difícil con no mucho.contexto, pero yo diría que se supone que la palabra clave asíncrona está en la declaración de su método. Cuando llame a su método, debe usar la palabra clave "await"


0 para la respuesta № 2

Como @Dev ha sugerido, esta no es la forma en que se usa async.

primero debe declarar un método asíncrono. Y luego use la palabra clave await para esperar el resultado o la llamada para finalizar.

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();
}

Lea más sobre async-await aquí:

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

Cómo y cuándo usar `async` y` await`

Editar: Creación de tareas asíncronas.

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

Este método puede ser esperado en otras llamadas de método.

Además, según lo sugerido por Jon Hanna, use async void solo para los manejadores de eventos (ya que no hay alternativa en ese caso). Usar de otro modo viola el principio TAP.