FrmMain: Multiple instances saves to different files.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user