编译错误

时间:2017-11-09 09:11:24

标签: c#

在下面的代码中:

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

我需要两行中的异步,但它显示以下错误:

  

错误CS0103当前上下文中不存在名称“async”   第1和第2行。

虽然我在第1行和第2行添加了分号,但它显示以下内容:

  

错误CS1002;第1和第2行的预期demoservice。

提前致谢。

2 个答案:

答案 0 :(得分:0)

正如@Timothy Groote所说,上下文不多但很难说async关键字应该是你方法的声明。当你打电话给你的方法时,你应该使用" await"关键字

答案 1 :(得分:0)

正如@Dev建议的那样,这不是你如何使用异步等待。

您需要先声明一个异步方法。然后使用await关键字等待结果或调用完成。

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

在此处阅读有关async-await的更多信息:

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

How and When to use `async` and `await`

编辑: 创建异步任务

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

可以在其他方法调用中等待此方法。

此外,正如Jon Hanna所建议的那样,仅对事件处理程序使用async void(因为在这种情况下没有其他选择)。使用否则违反了TAP原则。