/// <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); }
/// <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); }