public async Task <(DateTime StartTime, DateTime EndTime)> GetTimeRange() { var script = $@" return TradingVueObj.getRange(); "; var arr = await XWV.ExJs <double[]>(script); var startDT = TimeExtensions.FromUniversalDateTime(arr[0]); var endDT = TimeExtensions.FromUniversalDateTime(arr[1]); return(startDT, endDT); }
public TradingView(IXWebView xwv) { UnpackResources(); XWV = xwv ?? throw new ArgumentNullException(nameof(xwv)); XWV.Visibility = XWebViewVisibility.Visible; var thread = new Thread(async(obj) => { while (!IsDisposed) { try { await Task.Delay(LoopRefreshTimeout); if (LoopRefreshEnabled) { var ctx = XWV.ThreadSync.Invoke(() => TypedContext); await RefreshAsync(); } } catch (Exception ex) { } } }); thread.Priority = ThreadPriority.BelowNormal; thread.Start(); Action <double, double> timeRangeChangedHandler = (double startTime, double endTime) => { var startDateTime = TimeExtensions.FromUniversalDateTime(startTime); var endDateTime = TimeExtensions.FromUniversalDateTime(endTime); var args = new TimeRangeChangedEventArgs() { StartTime = startDateTime, EndTime = endDateTime }; XWV.ThreadSync.Invoker.Invoke(() => { TimeRangeChanged?.Invoke(this, args); }); }; xwv.BindToJs(timeRangeChangedHandler, "timeRangeUpdated", "window"); }