示例#1
0
        public async void Run()
        {
            var results = new List<Task<ClientResult>>();

            for (var i = 0; i < numberOfClients; i++)
            {
                var destination = GrainClient.GrainFactory.GetGrain<IDestination>(Guid.NewGuid().ToString());
                var client = GrainClient.GrainFactory.GetGrain<IClient>(Guid.NewGuid().ToString());
                await client.Initialize(destination, numberOfRepeatsPerClient);
                var observer = new ClientObserver();
                await client.Subscribe(GrainClient.GrainFactory.CreateObjectReference< IClientObserver>(observer).Result);
                
                clients.Add(client);
                observers.Add(observer); // to prevent GC collection of observer
                results.Add(observer.AsTask());
            }

            clients.ForEach(c => c.Run());

            var stopwatch = Stopwatch.StartNew();
            await Task.WhenAll(results.ToArray());
            stopwatch.Stop();

            WriteResultsToConsole(stopwatch);
            WriteResultsToFile(stopwatch);
            
            Console.WriteLine();
            Console.WriteLine("Done!. Press any key to exit ...");
        }
示例#2
0
        public async void Run()
        {
            var results = new List <Task <ClientResult> >();

            for (var i = 0; i < numberOfClients; i++)
            {
                var destination = DestinationFactory.GetGrain(Guid.NewGuid());

                var client = ClientFactory.GetGrain(Guid.NewGuid());
                await client.Initialize(destination, numberOfRepeatsPerClient);

                var observer = new ClientObserver();
                await client.Subscribe(ClientObserverFactory.CreateObjectReference(observer).Result);

                clients.Add(client);
                observers.Add(observer); // to prevent GC collection of observer
                results.Add(observer.AsTask());
            }

            clients.ForEach(c => c.Run());

            var stopwatch = Stopwatch.StartNew();
            await Task.WhenAll(results.ToArray());

            stopwatch.Stop();

            WriteResultsToConsole(stopwatch);
            WriteResultsToFile(stopwatch);

            Console.WriteLine();
            Console.WriteLine("Done!. Press any key to exit ...");
        }