我需要WinForms C#應用程序中的多線程實現的建議。我們有一個圖像 - 與文字和號碼並且有單獨的方法到OCR不同類型的數據。例如:使用多線程與C#進行OCR#
decimal[] numbers = getNumbers(bitmap, dictionary1);
string[] text = getText(bitmap, dictionary2);
int[] integers = getInts(bitmap, dictionary3);
// add 5 more data types (list, int[], etc..)
其結果是,整個proccess需要大約1秒。
我正在考慮在不同線程上同時運行OCR。出於這個原因,我試圖用任務工廠:
decimal[] numbers;
Task.Factory.StartNew(() =>
{numbers = getNumbers(bitmap, dictionary1);});
string[] text;
Task.Factory.StartNew(() =>
{text = getText(bitmap, dictionary2);});
textBox1.Text = "" + text[0]; // nothing
,但我沒有得到任何結果..
所以是有可能implemet在我的情況下,多線程?我必須使用哪種方法?
- 任務工廠
- 後臺工作
- 螺紋
- 或其他什麼東西?
如果可能的話,你可以給我如何使用你的方法有點意見,因爲TaskFactory失敗,當我試圖使用它(如例子)。
編輯:
好像
textBox1.Text = "" + text[0];
被執行的速度比
string[] text;
Task.Factory.StartNew(() =>
{text = getText(bitmap, dictionary2);});
這就是爲什麼文本框欄位是空..讓我感動「textBox1.Text = 「」 +文字[0];「在代碼的最後,終於得到了結果..
編輯2:
OK,任務不作任何區別..我得到同樣的速度測試結果沒有他們。
您的實際代碼是否等待任務完成? – erikH 2012-03-25 11:10:54
不..這就是問題 – Alex 2012-03-25 11:14:47