예제 #1
0
        public static async Task MinerStatsCheck()
        {
            await _semaphore.WaitAsync();

            try
            {
                foreach (var m in _runningMiners.Values)
                {
                    // skip if not running or if await already in progress
                    if (!m.IsRunning || m.IsUpdatingApi)
                    {
                        continue;
                    }
                    var ad = m.GetSummaryAsync();
                }
                // Update GUI
                ApplicationStateManager.RefreshRates();
                // now we shoud have new global/total rate display it
                var kwhPriceInBtc = ExchangeRateApi.GetKwhPriceInBtc();
                var profitInBTC   = MiningStats.GetProfit(kwhPriceInBtc);
                ApplicationStateManager.DisplayTotalRate(profitInBTC);
            }
            catch (Exception e)
            {
                Logger.Error(Tag, $"Error occured while getting mining stats: {e.Message}");
            }
            finally
            {
                _semaphore.Release();
            }
            // TODO put this somewhere else maybe
            await RestartStagnatedMiners();
        }