FrmMain: Multiple instances saves to different files.

This commit is contained in:
2020-09-21 02:06:09 +02:00
parent 1f7822e6a6
commit 0975975c5e

View File

@@ -110,14 +110,27 @@ namespace BasicBlockChain
return string.Format("{0} - {1} - {2} - {3}", transaction.Date, transaction.Sender, transaction.Receiver, transaction.MicroCoinAmount); 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() private void InitBlockChain()
{ {
FrmMainBlockChain blockChain = null; 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; blockChain = JsonParser.ParseText(contentBlockChainFile, typeof(FrmMainBlockChain), typeof(BlockChain), typeof(Block), typeof(Transaction)) as FrmMainBlockChain;
} }
@@ -136,9 +149,10 @@ namespace BasicBlockChain
private void SaveBlockChain() 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 FrmMainBlockChain blockChain = new FrmMainBlockChain
{ {
@@ -146,7 +160,13 @@ namespace BasicBlockChain
Miner = txtMinerName.Text, Miner = txtMinerName.Text,
}; };
string strBlockChain = JsonWriter.WriteObject(blockChain, indent: true); 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 public class FrmMainBlockChain