我正在努力解決這個問題。在parallel.foreach中使用局部變量
該代碼應該從文件對話框導入圖像。並且每個圖像都應該被處理併發送給正確的類。 處理器是一個檢測形狀的類,所以基本上我發送每個圖像並檢測其中的形狀(在類處理器內過濾到特定標準)
newList將獲取圖像中所有形狀的中心。
我對並行性知之甚少,我似乎無法想象如何解決這個問題。請記住,我不需要將任何內容從一個迭代傳遞到另一個迭代。我只是希望每次處理和更正圖像,並將整個操作分爲線程。
我的每一次迭代都是獨立的,我不需要從一次迭代中返回任何東西。
目前的問題是,從正確的類返回的結果有時是不正確的。我想這是因爲處理器和newList也必須是本地的?如果是,我該如何解決這個問題?如果不是我哪裏出錯了?
而且要記住,使用普通的foreach工作得很好
這裏是我的代碼:
Parallel.ForEach(ofd.FileNames,
(file) =>
{
Image exam = Image.FromFile(file);
var cvImage = new Image<Bgr, byte>((Bitmap)exam);
processor = processorMain;
processor.ProcessImage(cvImage);
List<Point> newList = new List<Point>();
newList = processor.getList();
correct.correct(cvImage, answerKey, nOptions);
});
您是否注意到您完全沒有描述您的問題? :) – Rytmis
問題是,這個Parallel.Foreach不起作用,我已經解釋了原因。我的每一次迭代都是獨立的,我不需要從一個迭代到另一個迭代。 – user3473655
'Parallel.Foreach不起作用'我不知道這意味着什麼。 「我已經解釋了原因,你說過它應該做什麼。你沒有描述你看到的是什麼樣的行爲與你的期望。 – Jonesopolis