从C#中的getter或setter调用异步方法的最优雅的方法是什么?
这是一些伪代码来帮助解释自己。
async Task<IEnumerable> MyAsyncMethod() { return await DoSomethingAsync(); } public IEnumerable MyList { get { //call MyAsyncMethod() here } }
由于我的体系结构是脱钩的,所以我确实需要从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"); } } }