一尘不染

如何从getter或setter调用异步方法?

c#

从C#中的getter或setter调用异步方法的最优雅的方法是什么?

这是一些伪代码来帮助解释自己。

async Task<IEnumerable> MyAsyncMethod()
{
    return await DoSomethingAsync();
}

public IEnumerable MyList
{
    get
    {
         //call MyAsyncMethod() here
    }
}

阅读 334

收藏
2020-05-19

共1个答案

一尘不染

由于我的体系结构是脱钩的,所以我确实需要从get方法发起调用。所以我想出了以下实现。

用法: 标题 位于ViewModel或可以静态声明为页面资源的对象中。绑定到它,当getTitle()返回时,将填充该值而不会阻塞UI。

string _Title;
public string Title
{
    get
    {
        if (_Title == null)
        {   
            Deployment.Current.Dispatcher.InvokeAsync(async () => { Title = await getTitle(); });
        }
        return _Title;
    }
    set
    {
        if (value != _Title)
        {
            _Title = value;
            RaisePropertyChanged("Title");
        }
    }
}
2020-05-19