using System.Collections.Generic;
private decimal balance = 0;
private readonly object lockObject = new object();
private List<string> transactionLogs = new List<string>();
public void TopUp(decimal amount)
transactionLogs.Add($"Top-up: {amount} at {DateTime.Now}");
public decimal GetBalance()
public void DisplayTransactionLogs()
foreach (var log in transactionLogs)
Wallet wallet = new Wallet();
Thread[] threads = new Thread[10];
for (int i = 0; i < 10; i++)
threads[i] = new Thread(() => wallet.TopUp(100));
foreach (var thread in threads)
Console.WriteLine("Final balance: " + wallet.GetBalance());
wallet.DisplayTransactionLogs();