using System.Threading.Tasks;
using System.Collections.Generic;
public async static Task Main()
var tasks = new List<Task>();
var vasyan = new Account(1, "vasyan", 2000.0);
var tolyan = new Account(2, "tolyan", 1000.0);
Send(vasyan, tolyan, 50.0);
var t2 = Task.Run(()=> { lock (vasyan)
await Task.WhenAll(new []{t1, t2});
Console.WriteLine(vasyan.Amount);
Console.WriteLine(tolyan.Amount);
public Account(int userId, string name, double amount)
public static void Send(Account a, Account b, double amount)