Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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# 在我的INotifyPropertyChanged类中运行异步函数,但代码未运行_C#_Forms_Xamarin - Fatal编程技术网

C# 在我的INotifyPropertyChanged类中运行异步函数,但代码未运行

C# 在我的INotifyPropertyChanged类中运行异步函数,但代码未运行,c#,forms,xamarin,C#,Forms,Xamarin,我正在尝试使listview中的每个listcell根据它们以前单击的内容而有所不同,并且我正在使用INotifyPropertyChanged进行此操作 我的类中有一个if/else代码,但它没有运行。。我没有颜色。 例如,如果我给我们一个颜色=color.Green;在我的公共电流中,它就起作用了。但当我执行这个if/else语句时,它不会运行 这是我的班级: public class Current : INotifyPropertyChanged { Color color;

我正在尝试使listview中的每个listcell根据它们以前单击的内容而有所不同,并且我正在使用INotifyPropertyChanged进行此操作

我的类中有一个if/else代码,但它没有运行。。我没有颜色。 例如,如果我给我们一个颜色=color.Green;在我的公共电流中,它就起作用了。但当我执行这个if/else语句时,它不会运行

这是我的班级:

public class Current : INotifyPropertyChanged
{
Color color;

    public event PropertyChangedEventHandler PropertyChanged;

    public Current()
    {
         RunThis ();
    }


    async void RunThis ()
    {
        var checkWhatOption = await parseAPI.WhatOption ();

        if ((checkWhatOption ["results"] as JArray).Count > 0) {

             color =  Color.Black;
        }
        else {
            color = Color.Red;
        }

    }

    public Color Color
    {
        set
        {
            if (color != value)
            {
                color = value;

                if (PropertyChanged != null)
                {
                    PropertyChanged(this,
                        new PropertyChangedEventArgs("Color"));
                }
            }
        }
        get
        {
            return color;
        }

    }
  }
在我使用它的页面上的XAML中,我有以下代码:

<Label BackgroundColor="{Binding Color}"  >  
<Label.BindingContext>
  <local:Current />
</Label.BindingContext>

很可能它被封锁了

从构造函数调用
async
运行此
函数时没有使用
wait
,当然在构造函数中不能使用

同时尝试将
运行此
函数更改为以下内容:-

public async Task RunThis()
{
   ..
}

然后使用
wait
,而不是通过构造函数,找到调用此函数的适当位置。确保调用者也指定了
async

如果我不通过构造函数调用它,我如何调用它?也许这样就行了?protected override async void OnAppearing(){//并将代码放在此处?}@William.John
protected async override void OnAppearing()
可在
内容页上找到。是。我在我的XAML中使用这个类,所以我没有在代码中使用它。我是否应该在appearing()wait Task.Delay(1000)上执行受保护的异步重写void;这将使它加载?@William.John使用
任务。延迟不太可能解决您的问题。请在xaml代码下检查我更新的代码。即使我在控制台中收到“Test”消息,仍然无法工作。不知怎么被堵住了吗?
public async Task RunThis()
{
   ..
}