private void BgWorker_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
return;
SyncStatus syncStatus = null;
try
{
syncStatus = BlockStudioProjectService.BlockStudioProject.Connection.EthereumService.GetSyncing();
}
catch (Exception)
{
BeginInvoke((MethodInvoker) delegate
{
lblBlockChainStatus.Text = "No instance running";
});
Thread.Sleep(500);
continue;
}
BeginInvoke((MethodInvoker) delegate
{
if (_isSyncing != syncStatus.IsSyncing)
{
if (syncStatus.IsSyncing)
{
var totalBlocks = syncStatus.HighestBlock.HexToInt();
pbBlockChainSyncing.Maximum = totalBlocks;
pbBlockChainSyncing.Style = ProgressBarStyle.Blocks;
lblBlockChainStatus.Text = "Syncing blockchain";
}
else
{
pbBlockChainSyncing.Style = ProgressBarStyle.Continuous;
pbBlockChainSyncing.Step = 100;
lblBlockChainStatus.Text = "Blockchain up to date";
}
_isSyncing = syncStatus.IsSyncing;
}
if (syncStatus.IsSyncing)
{
var totalBlocks = syncStatus.HighestBlock.HexToInt();
var blocksCompleted = syncStatus.CurrentBlock.HexToInt();
var blocksRemaining = (totalBlocks-1) - blocksCompleted;
var step = blocksCompleted - pbBlockChainSyncing.Value;
pbBlockChainSyncing.Step = step;
pbBlockChainSyncing.PerformStep();
lblBlockChainStatus.Text = string.Format("Syncing blockchain, {0} blocks remaining",
blocksRemaining.ToString("N0"));
}
else
{
pbBlockChainSyncing.Maximum = 100;
pbBlockChainSyncing.Step = 100;
pbBlockChainSyncing.PerformStep();
lblBlockChainStatus.Text = "Blockchain up to date";
}
});
Thread.Sleep(200);
}
}