public AlcedoWindow(AlcedoWindowViewModel vm) { WindowList.Add(this); this.DataContext = vm; InitializeComponent(); this.Left = SystemParameters.VirtualScreenWidth; var vsh = (int)SystemParameters.WorkArea.Height - 100; this.Top = App.random.Next(vsh); Observable.Interval(TimeSpan.FromMilliseconds(1)) .ObserveOn(SynchronizationContext.Current) .TakeUntil(_ => this.Left < -this.Width) .Subscribe(_ => this.Left -= 2.5, () => this.Close()); }
private void Publish() { long lastId = -1; Observable.Timer(TimeSpan.FromMilliseconds(0), TimeSpan.FromSeconds(70)) .ObserveOn(SynchronizationContext.Current) .Subscribe(async _ => { var now = DateTime.Now; try { using (var sww = new StreamWriter($@"{PATH}/log_{now.Year}_{now.Month}_{now.Day}.log", true, Encoding.UTF8)) { await sww.WriteLineAsync($"{now.Hour}:{now.Minute}:{now.Second}.{now.Millisecond} => lastId = {lastId} : lastId!=-1 = {lastId != -1}"); } var status = (await Token.Statuses.HomeTimelineAsync(lastId != -1 ? param : fparam))?.Reverse().ToArray(); var id = status?.Where(status => status.RetweetedStatus == null)?.Select(x => x.Id).Max(); if (id != null && lastId != id) { lastId = (long)id; Observable.Timer(TimeSpan.FromMilliseconds(0), TimeSpan.FromSeconds((int)65 / status.Length)) .TakeWhile(x => x < status.Length) .ObserveOn(SynchronizationContext.Current) .Subscribe(x => { var al = new AlcedoWindowViewModel(status[x]); var window = new AlcedoWindow(al); window.Show(); }); param["since_id"] = lastId; } using var sw = new StreamWriter($@"{PATH}/log_{now.Year}_{now.Month}_{now.Day}.log", true, Encoding.UTF8); foreach (var wId in status.Select(x => x.Id).ToArray()) { await sw.WriteLineAsync(wId.ToString()); } } catch (Exception ex) { using var sw = new StreamWriter($@"{PATH}/log_{now.Year}_{now.Month}_{now.Day}.log", true, Encoding.UTF8); await sw.WriteLineAsync($"{now.Hour}:{now.Minute}:{now.Second}.{now.Millisecond} => {ex.Message}"); } }); }