Приветсвтую.
Хочу создать класс с асинхронными геттерами пропертей. Вроде бы даже удалось и работает. Есть только сомнения по поводу красоты кода, но знаний как сделать покрасивее не хватает..
private double _d;
public double D
{
get
{
System.Threading.SynchronizationContext.Current.Post((s) =>
{
Action a = async () => { D = await getD(); };
a();
}, this);
return _d;
}
set
{
_d = value;
NotifyPropertyChanged("D");
}
}
private async Task<double> getD()
{
HttpClient hc = new HttpClient();
HttpResponseMessage resp = await hc.GetAsync("http://habr.ru");
string pageContent = await resp.Content.ReadAsStringAsync();
return pageContent.Length;
}
Можно ли тут как нибудь вызвать Action без создания оного? сразу бы в одной строчке вызвать, чтоб посолиднее смотрелось ;)
И второй вопрос, тупенький: как можно "считать" эту проперти без присваивания к чему нибудь.
То есть просто
o.D;
вместо
double a = o.D;
Так то оно считывается при первом биндинге к гую, вот если захочу зарефрешить, то не знаю как покрасивше сделать..
Ну либо вообще отговорите меня от этой безумной идеи и предложите варианты поинтереснее :)