From 0975975c5e0784b025d58980ea7538cb47af5d0c Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Mon, 21 Sep 2020 02:06:09 +0200 Subject: [PATCH] FrmMain: Multiple instances saves to different files. --- BasicBlockChain/FrmMain.cs | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/BasicBlockChain/FrmMain.cs b/BasicBlockChain/FrmMain.cs index 38bb223..13a90e1 100644 --- a/BasicBlockChain/FrmMain.cs +++ b/BasicBlockChain/FrmMain.cs @@ -110,14 +110,27 @@ namespace BasicBlockChain return string.Format("{0} - {1} - {2} - {3}", transaction.Date, transaction.Sender, transaction.Receiver, transaction.MicroCoinAmount); } - private const string BlockChainFile = "BlockChain.json"; + private const string BlockChainFile = "BlockChain.{0}.json"; + private const string BlockChainLock = "BlockChain.{0}.lock"; + private int _currentFile = 0; private void InitBlockChain() { FrmMainBlockChain blockChain = null; - if (File.Exists(BlockChainFile)) + + string blockChainLock; + do { - string contentBlockChainFile = File.ReadAllText(BlockChainFile); + blockChainLock = string.Format(BlockChainLock, _currentFile); + if (File.Exists(blockChainLock) == false) { break; } + _currentFile++; + } while (true); + File.WriteAllText(blockChainLock, "Lock"); + + string blockChainFile = string.Format(BlockChainFile, _currentFile); + if (File.Exists(blockChainFile)) + { + string contentBlockChainFile = File.ReadAllText(blockChainFile); blockChain = JsonParser.ParseText(contentBlockChainFile, typeof(FrmMainBlockChain), typeof(BlockChain), typeof(Block), typeof(Transaction)) as FrmMainBlockChain; } @@ -136,9 +149,10 @@ namespace BasicBlockChain private void SaveBlockChain() { - if (File.Exists(BlockChainFile)) + string blockChainFile = string.Format(BlockChainFile, _currentFile); + if (File.Exists(blockChainFile)) { - File.Delete(BlockChainFile); + File.Delete(blockChainFile); } FrmMainBlockChain blockChain = new FrmMainBlockChain { @@ -146,7 +160,13 @@ namespace BasicBlockChain Miner = txtMinerName.Text, }; string strBlockChain = JsonWriter.WriteObject(blockChain, indent: true); - File.WriteAllText(BlockChainFile, strBlockChain); + File.WriteAllText(blockChainFile, strBlockChain); + + string blockChainLock = string.Format(BlockChainLock, _currentFile); + if (File.Exists(blockChainLock)) + { + File.Delete(blockChainLock); + } } public class FrmMainBlockChain