public DmcVideoSource(CookieContainer cookieContainer, Uri heartBeatsUri, APIs.heartbeats.Response.Rootobject rootobject) { Status = HeartBeatsStatus.Active; ContentsUri = new Uri(rootobject.data.session.content_uri); Task.Run(() => { do { try { Task.Delay(rootobject.data.session.keep_method.heartbeat.lifetime / 3).Wait(tokenSource.Token); var beatTask = BeatAsync(cookieContainer, heartBeatsUri, rootobject); beatTask.Wait(tokenSource.Token); heartbeatsInfo = beatTask.Result; } catch (OperationCanceledException) { return; } catch (Exception) { HeartbeatsError?.Invoke(); } } while (heartbeatsInfo != null && !tokenSource.IsCancellationRequested); }); }
private async Task <APIs.heartbeats.Response.Rootobject> BeatAsync(CookieContainer cookieContainer, Uri heartBeatsUri, APIs.heartbeats.Response.Rootobject rootobject) { var session = new Session <APIs.heartbeats.Response.Rootobject>((flow) => { var accessor = new APIs.heartbeats.Accessor(); accessor.Setting(cookieContainer, heartBeatsUri, rootobject.data); flow.Return(accessor); return(new APIs.heartbeats.Parser().Parse(flow.GetResult())); }); return(await session.RunAsync(tokenSource.Token)); }