static void Main(string[] args) { try { string server = args.Length > 0 ? args[0] : "localhost"; int port = args.Length > 1 ? int.Parse(args[1]) : 8888; #region Wcf Channel var factory = new ChannelFactory <IWordContract>(new NetTcpBinding() , new EndpointAddress($"net.tcp://{server}:{port}")); IWordContract client = factory.CreateChannel(); #endregion Wcf Channel while (true) { try { string line = Console.ReadLine(); Console.WriteLine(client.GetWordsAsync(line, 10).GetAwaiter().GetResult()); } catch (Exception ex) { Console.WriteLine($"{ex.Message}\r\n{ex.StackTrace}"); } } } catch (Exception ex) { Console.WriteLine($"{ex.Message}\r\n{ex.StackTrace}"); Console.ReadLine(); } }
static void Main(string[] args) { int port = 8888; Task <int>[] tasks = new Task <int> [Environment.ProcessorCount * 2]; // Количество потоков var service = new WordService(new FileStream("test.in", FileMode.Open), port); service.RunService(); for (int i = 0; i < tasks.Length; i++) { tasks[i] = new Task <int>(() => { var timer = new Stopwatch(); int count = 0; try { var factory = new ChannelFactory <IWordContract>(new NetTcpBinding() , new EndpointAddress($"net.tcp://localhost:{port}")); IWordContract client = factory.CreateChannel(); timer.Start(); foreach (var prefix in service.Prefixes) { client.GetWordsAsync(prefix, 10).GetAwaiter().GetResult(); count++; if (count % 1000 == 0) { Log.Write($"Поток {Thread.CurrentThread.ManagedThreadId}: {count / timer.Elapsed.TotalSeconds} запросов/сек"); } } timer.Stop(); } catch (Exception ex) { Log.WriteError($"{Thread.CurrentThread.ManagedThreadId}: {ex.Message}\r\n{ex.StackTrace}"); } return((int)(count / timer.Elapsed.TotalSeconds)); }); tasks[i].Start(); Thread.Sleep(500); } Task.WhenAll(tasks).Wait(Timeout.Infinite); Log.Write($"Всего запросов/сек: {tasks.Select(s => s.Result).Sum()}"); Console.ReadLine(); }