Beispiel #1
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 ...");
        }
Beispiel #2
0
 public async static System.Threading.Tasks.Task <IClientObserver> CreateObjectReference(IClientObserver obj)
 {
     if (methodInvoker == null)
     {
         methodInvoker = new ClientObserverMethodInvoker();
     }
     return(ClientObserverFactory.Cast(await GrainReference.CreateObjectReference(obj, methodInvoker)));
 }