Мне интересно, безопасно ли вызывать метод asyn c в конструкторе следующим образом:
Допустим, у нас есть метод asyn c Refre sh который извлекает данные из inte rnet. Мы также используем Reactive Extensions , чтобы уведомить всех, кто заинтересован в получении новых данных.
Мне интересно, безопасно ли вызывать Refre sh впервые в конструкторе класса? Могу ли я использовать такую конструкцию?
Task.Run (Refre sh);
или
Refre sh () .ConfigureAwait (false)
Меня не очень интересует, завершился ли метод или нет, поскольку я получу уведомление через Reactive Extensions при получении данных.
Это нормально делать что-то подобное?
public class MyClass
{
BehvaiorSubject<Data> _dataObservable = new BehvaiorSubject(Data.Default);
IObservable DataObservable => _dataObservable;
public MyClass()
{
Refresh().ConfigureAwait(false);
}
public async Task Refresh()
{
try
{
var data = await FetchDataFromNetwork();
_dataObservable.OnNext(data);
}
catch (VariousExceptions e)
{
//do some appropriate stuff
}
catch(Exception)
{
//do some appropriate stuff
}
}
}