using CodeHollow.FeedReader; namespace SharpRss.Models { public class FeedModel { public FeedModel(string rssUrl) { _rssUrl = rssUrl; _fetchTask = FetchAsync(); } private Task _fetchTask; private async Task FetchAsync() { IsReady = false; _feed = await FeedCache.GetFeed(_rssUrl); IsReady = true; } private Feed? _feed; public Feed Base { get { if (_feed == null) { if (_fetchTask.IsFaulted) { IsFaulted = _fetchTask.IsFaulted; return new Feed(); } if (!(_fetchTask.Status == TaskStatus.Running || _fetchTask.Status == TaskStatus.WaitingForActivation)) _fetchTask.Start(); _fetchTask.Wait(); } return _feed ?? new Feed(); } } public bool IsFaulted { get; private set; } public bool IsReady { get; private set; } private readonly string _rssUrl; } }