public async Task <IHttpActionResult> AsyncOperation()
        {
            var bo = new BusinessObjectAsync();

            await bo.OperationAsync();

            return(Ok($"Completed Count: {bo.CompletedCount}"));
        }
Example #2
0
        public async Task AsyncOperation()
        {
            var asyncEvent = new BusinessObjectAsync();

            await asyncEvent.OperationAsync();

            await asyncEvent.OperationAsync();

            await asyncEvent.OperationAsync();

            Assert.AreEqual(3, asyncEvent.CompletedCount);
        }
Example #3
0
        public async Task BusinessObject_AutoResetEvent_MultipleThreads()
        {
            var asyncEvent = new BusinessObjectAsync();

            var allTasks = new List <Task>();

            var maxThreadCount = 0;

            var cancel = false;
            var task   = Task.Run(async() =>
            {
                if (Process.GetCurrentProcess().Threads.Count > maxThreadCount)
                {
                    maxThreadCount = Process.GetCurrentProcess().Threads.Count;
                }
                await Task.Delay(50);
                if (cancel)
                {
                    return;
                }
            });

            for (var i = 0; i < 20; i++)
            {
                List <Task> tasks = new List <Task>();

                for (var j = 0; j < 20; j++)
                {
                    tasks.Add(Task.Run(async() => await asyncEvent.OperationAsync()));
                    await Task.Delay(15);
                }
                allTasks.AddRange(tasks);

                await Task.WhenAll(tasks);
            }


            Assert.AreEqual(400, asyncEvent.CompletedCount);

            cancel = true;
            await task;
        }
Example #4
0
        public async Task BusinessObject_Simple_MultipleThreads()
        {
            var asyncEvent = new BusinessObjectAsync();

            var allTasks = new List <Task>();

            for (var i = 0; i < 20; i++)
            {
                List <Task> tasks = new List <Task>();

                for (var j = 0; j < 20; j++)
                {
                    tasks.Add(Task.Run(async() => await asyncEvent.OperationAsync()));
                }
                allTasks.AddRange(tasks);

                await Task.WhenAll(tasks);
            }


            Assert.AreEqual(400, asyncEvent.CompletedCount);
        }
Example #5
0
 private async void AsyncOperation_Click(object sender, RoutedEventArgs e)
 {
     await BusinessObjectAsync.OperationAsync();
 }