我需要在WinForms 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..)
因此,整个过程大约需要1秒钟。
我在考虑同时在不同的线程上运行OCR。为此,我尝试使用Task Factory:
decimal[] numbers;
Task.Factory.StartNew(() =>
{numbers = getNumbers(bitmap, dictionary1);});
string[] text;
Task.Factory.StartNew(() =>
{text = getText(bitmap, dictionary2);});
textBox1.Text = "" + text[0]; // nothing
我是一名有用的助手,能够翻译文本。
但我没有得到任何结果。
那么,在我的情况下是否可以实现多线程?我应该使用哪种方法?
- 任务工厂
- 后台工作者
- 线程
- 还是其他什么东西?
如果可能的话,您能否就如何使用您的方法给我一些建议,因为当我尝试使用TaskFactory时失败了(如示例所示)。
编辑:
似乎
textBox1.Text = "" + text[0];
执行速度比
更快。string[] text;
Task.Factory.StartNew(() =>
{text = getText(bitmap, dictionary2);});
这就是为什么TextBox字段为空..所以我把"textBox1.Text = "" + text[0];"移到了代码的最后,最终获得了结果。
编辑2:好的,任务没有任何区别..我得到了相同的速度测试结果,没有它们。