在下面的代码中:
objStockcheck = async ObjPrice.getprice();
objStockcheck = async ObjAvail.getAvailability();
我需要两行中的异步,但它显示以下错误:
错误CS0103当前上下文中不存在名称“async” 第1和第2行。
虽然我在第1行和第2行添加了分号,但它显示以下内容:
错误CS1002;第1和第2行的预期demoservice。
提前致谢。
答案 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原则。