Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Android-在foreach循环C中使用Wait_C#_Android_Visual Studio_Xamarin_Foreach - Fatal编程技术网

C# Android-在foreach循环C中使用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的方法。我

当我运行这些代码时,我应该看到一行包含一些值,包括价格已经添加到我的列表中。getpriceAsync方法是我创建的一种方法,用于使用JSON从特定网站获取数据,需要等待,它将链接作为参数。我试着把它从foreach循环中放出来,它成功了,它只有在它在foreach循环中时才会阻塞,尽管它不会抛出错误,也不会显示列表中应该包含字符串price的行。我无法将wait表达式置于循环之外,因为它需要项的名称作为参数。 我的问题有什么解决办法吗? 谢谢


因此,您正在重写一个名为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"));
            }
        }
    }