C# Android-在foreach循环C中使用Wait
当我运行这些代码时,我应该看到一行包含一些值,包括价格已经添加到我的列表中。getpriceAsync方法是我创建的一种方法,用于使用JSON从特定网站获取数据,需要等待,它将链接作为参数。我试着把它从foreach循环中放出来,它成功了,它只有在它在foreach循环中时才会阻塞,尽管它不会抛出错误,也不会显示列表中应该包含字符串price的行。我无法将wait表达式置于循环之外,因为它需要项的名称作为参数。 我的问题有什么解决办法吗? 谢谢C# Android-在foreach循环C中使用Wait,c#,android,visual-studio,xamarin,foreach,C#,Android,Visual Studio,Xamarin,Foreach,当我运行这些代码时,我应该看到一行包含一些值,包括价格已经添加到我的列表中。getpriceAsync方法是我创建的一种方法,用于使用JSON从特定网站获取数据,需要等待,它将链接作为参数。我试着把它从foreach循环中放出来,它成功了,它只有在它在foreach循环中时才会阻塞,尽管它不会抛出错误,也不会显示列表中应该包含字符串price的行。我无法将wait表达式置于循环之外,因为它需要项的名称作为参数。 我的问题有什么解决办法吗? 谢谢 因此,您正在重写一个名为OnCreate的方法。我
因此,您正在重写一个名为OnCreate的方法。我假设,这个方法是在您无法控制的外部代码中调用的 该方法称为OnCreate,而不是OnCreateAsync。因此,我怀疑调用该方法时没有在外部代码中等待它 要么: *查找要重写的此方法的异步变量。
*使用Task.WaitAll调用异步方法,而不将OnCreate方法转换为异步方法。如果if语句在foreach循环之外,它是否有效?当然不,因为if语句的条件与foreach循环所遍历的表中的项相关。另外,我已尝试删除if语句并将WAIT表达式保留在foreach中,但也没有成功。您使用了错误的方法从数据库中选择数据。请尝试选择数据,如图所示getpriceasync是一种自定义外部方法。在我的例子中,你能提供关于如何实现Task.WaitAll的代码吗?
protected async override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.layout);
string price = "";
var db = new SQLiteConnection(Class1.dpPath);
var table = db.Table<Table>();
foreach(var item in table)
{
if(item.value != "0" && item.quantity != "0")
{
price = await GetpriceAsync(item.name); // here is the line of the await keyword
Class1.tableItems.Add(new TableItem(item.quantity, price, "1000"));
}
}
}