public void Test1() { using BusinessLogic Program1 = new BusinessLogic(); P2PClient server1 = new P2PClient("Источник"); Program1.InitServer(server1); using BusinessLogic Program2 = new BusinessLogic(); P2PClient server2 = new P2PClient("Приёмщик"); Program2.InitServer(server2); Stopwatch sw = new Stopwatch(); Program1.OnDebugMessage += (a, b) => Console.WriteLine($"{Program1.ToString()}: [{sw.Elapsed}] {b}"); Program2.OnDebugMessage += (a, b) => Console.WriteLine($"{Program2.ToString()}: [{sw.Elapsed}] {b}"); sw.Start(); ulong From1To2 = Program1.AddConnection(server2.LocalEndPoint); var toSend = new { Type = "msg", Message = new string('g', 128) + new string('я', 128) }; Program2.OnMessageSend += Program2_OnMessageSend; Program1.Send(From1To2, toSend); bool good = false; while (!tokenSource.IsCancellationRequested) { Thread.Sleep(1); } sw.Stop(); Console.WriteLine(sw.Elapsed); Assert.IsTrue(good); return; void Program2_OnMessageSend(BusinessLogic arg1, ulong arg2, dynamic arg3) { PackageInfo[] messages = Program2.GetAllMessages().ToArray(); Assert.AreEqual(1, messages.Length); Console.WriteLine(JsonConvert.SerializeObject(toSend)); Assert.AreEqual(JsonConvert.SerializeObject(toSend), JsonConvert.SerializeObject(messages[0].Json)); good = true; tokenSource.Cancel(); } }