protected override IDisposable Run(IObserver <TSource> observer, IDisposable cancel, Action <IDisposable> setSink) { if (_dueTimeA.HasValue) { var sink = new TimeA(this, observer, cancel); setSink(sink); return(sink.Run()); } else { var sink = new TimeR(this, observer, cancel); setSink(sink); return(sink.Run()); } }
private void Update(EvaluationContext context) { var now = DateTime.Now; try { var timeA = DateTime.Today; var timeB = DateTime.Today; var timeAString = TimeA.GetValue(context); var timeBString = TimeB.GetValue(context); var mix = Mix.GetValue(context); if (DateTime.TryParse(timeAString, out var d1)) { timeA = d1; } else { Log.Warning($"invalid format for lauchTime '{timeAString}'"); } if (DateTime.TryParse(timeBString, out var d2)) { timeB = d2; } else { Log.Warning($"invalid format for lauchTime '{timeBString}'"); } //var v = Duration.GetValue(context); var duration = timeB - timeA; var format = Format.GetValue(context); var outString = (timeA + TimeSpan.FromHours(duration.TotalHours * mix)) .ToString(format, CultureInfo.InvariantCulture); Output.Value = outString; } catch (System.FormatException) { Output.Value = "Invalid Format"; } }