我需要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