Пример #1
0
        /// <summary>
        /// async method to compare
        /// </summary>
        /// <param name="secImg"></param>
        /// <returns></returns>
        public async Task <Int16Image> CompareImagesAsync(Int16Image secImg)
        {
            if (!IsSameDimension(secImg))
            {
                throw new ArgumentOutOfRangeException("Images must be the same width and height!");
            }
            var newImage = new Int16Image("comparison of" + _fileName + " " + secImg.GetFileName(), _width, _height);

            List <Task> imgTasks = new List <Task>();

            for (var h = 0; h < _height; h++)
            {
                int row = h;
                imgTasks.Add(Task.Run(() => newImage.CompareRow(row, this, secImg)));
            }

            while (imgTasks.Any())
            {
                Task finished = await Task.WhenAny(imgTasks);

                Console.WriteLine("Row complete");
                imgTasks.Remove(finished);
            }

            return(newImage);
        }
Пример #2
0
        /// <summary>
        /// non async method of compare images
        /// </summary>
        /// <param name="secImg"></param>
        /// <returns></returns>
        public Int16Image CompareImages(Int16Image secImg)
        {
            if (!IsSameDimension(secImg))
            {
                throw new ArgumentOutOfRangeException("Images must be the same width and height!");
            }
            var newImage = new Int16Image("comparison of" + _fileName + " " + secImg.GetFileName(), _width, _height);

            List <Task> imgTasks = new List <Task>();

            for (var h = 0; h < _height; h++)
            {
                int row = h;
                newImage.CompareRow(row, this, secImg);
            }

            return(newImage);
        }