private void HandleQuoteItem(object sender, MessageData item) { var data = JsonSerializer.Deserialize <Quote>(item.Data); Debug.WriteLine(JsonSerializer.ToJsonString(data)); QuoteEvent?.Invoke(sender, data); }
private void AsyncMergeTick() { bool bBusy = false; lock (__oLock) { bBusy = __bBusy; if (!bBusy) { __bBusy = true; } } if (!bBusy) { Task.Factory.StartNew(() => { while (__cQueue.Count > 0) { QuoteEvent cQuoteEvent = null; lock (__cQueue) { cQuoteEvent = __cQueue.Dequeue(); } SeriesStorage cStorage = null; string sLSymbolId = cQuoteEvent.Quote.SymbolId.ToLower(); lock (__cStorages) { __cStorages.TryGetValue(sLSymbolId, out cStorage); } if (cStorage != null) { cStorage.MergeTick(cQuoteEvent.Tick); } } lock (__oLock) { __bBusy = false; } }); } }
private void QuoteService_onQuote(object sender, QuoteEvent e) { if (__sSymbolId.Equals(e.Quote.SymbolId)) { __cTimer.Start(); } }
private void Timer_onElapsed(object sender, System.Timers.ElapsedEventArgs e) { bool bBusy = false; lock (__oLock) { bBusy = __bBusy; if (!bBusy) { __bBusy = true; } } if (!bBusy) { if (__cQueue.Count > 0) { QuoteEvent cQuoteEvent = null; while (__cQueue.Count > 0) { lock (__cQueue) { cQuoteEvent = __cQueue.Dequeue(); } QuoteUpdate(cQuoteEvent.ExchangeName, cQuoteEvent.DataSource, cQuoteEvent.Quote); //更新報價 } RefreshGrid(); } lock (__oLock) { __bBusy = false; } } }
private void QuoteService_onQuote(object sender, QuoteEvent e) { lock (__cQueue) { __cQueue.Enqueue(e); } __cTimer.Start(); }
private void QuoteService_onQuote(object sender, QuoteEvent e) { string sSymbolId = this.Bars.Request.Symbol; if (sSymbolId.Equals(e.Quote.SymbolId)) { Interlocked.Increment(ref __iTickCount); if (!__bBusy) { AsyncCalculate(); } } }
/// <summary> /// 發送即時成交Tick的通知 /// </summary> /// <param name="e">QuoteEvent類別</param> protected void OnQuote(QuoteEvent e) { ++__lPacketCount; if (onQuote != null) { Task.Factory.StartNew(() => { onQuote(this, e); }); } }
private void HandleQuoteItem(object sender, MessageData item) { var data = JsonSerializer.Deserialize <Quote>(item.Data); QuoteEvent?.Invoke(sender, data); }
private void QuoteService_onQuote(object sender, QuoteEvent e) { lock (__cQueue) { __cQueue.Enqueue(e); } AsyncMergeTick(); }