AsyncObservables.Services.PrimeCheckService.IsPrimeAsync C# (CSharp) Method

IsPrimeAsync() public method

public IsPrimeAsync ( int number ) : Task
number int
return Task
        public virtual async Task<bool> IsPrimeAsync(int number)
        {
            return await Task.Run(() =>
            {
                for (int j = 2; j <= Math.Sqrt(number); j++)
                {
                    if (number % j == 0)
                    {
                        return false;
                    }
                }
                return true;
            });
        }
    }

Usage Example

Esempio n. 1
0
        private static void RunningAsyncCodeInWhere()
        {
            Demo.DisplayHeader("Running async code int the pipeline - order is not determenistic");

            var svc = new PrimeCheckService();

            //
            // this wont Compile
            //
            //var subscription = Observable.Range(1, 10)
            //    .Where(async x => await svc.IsPrimeAsync(x))
            //    .SubscribeConsole("AsyncWhere");

            //
            // This compiles and runs - query syntax
            //
            IObservable<int> primes =
                from number in Observable.Range(1, 10)
                from isPrime in svc.IsPrimeAsync(number)
                where isPrime
                select number;

            //
            // The same, but in methods chain
            //
            primes =
                Observable.Range(1, 10)
                    .SelectMany((number) => svc.IsPrimeAsync(number),
                                 (number, isPrime) => new { number, isPrime })
                    .Where(x => x.isPrime)
                    .Select(x => x.number);

            var exampleResetEvent = new AutoResetEvent(false);
            primes
                .DoLast(() => exampleResetEvent.Set(), delay: TimeSpan.FromSeconds(1))
                .SubscribeConsole("primes");

            exampleResetEvent.WaitOne();
        }
PrimeCheckService