我正在构建一个应用程序,它使用扫描程序API和图像到其他格式转换器。我有一个这样做的方法(实际上是一个click事件):C#一步一步执行
private void ButtonScanAndParse_Click(object sender, EventArgs e)
{
short scan_result = scanner_api.Scan();
if (scan_result == 1)
parse_api.Parse(); // This will check for a saved image the scanner_api stores on disk, and then convert it.
}
的问题是,如果条件(scan_result == 1)inmediatly评估,所以它只是不工作。
如何强制CLR等待API返回方便的结果。
注意
只是做一样的东西:
private void ButtonScanAndParse_Click(object sender, EventArgs e)
{
short scan_result = scanner_api.Scan();
MessageBox.Show("Result = " + scan_result);
if (scan_result == 1)
parse_api.Parse(); // This will check for a saved image the scanner_api stores on disk, and then convert it.
}
它的工作原理,并显示结果。
有没有办法做到这一点,怎么样?
非常感谢!
UPDATE:
即使世界上扫描仪API的事件:
Public Event EndScan() // Occurs when the scanned the image.
但我不知道如何使用它。任何想法?
当您使用第二种方法时,消息框会正确显示结果吗? – Sev 2010-06-14 21:20:54
快速链接:http://stackoverflow.com/questions/2418579/c-apm-with-callback-tutorial - 您需要查看异步编程模型。 – 2010-06-14 21:20:58
我注意到你使用了“threads”标记,听起来这确实可能是一个线程问题。请解释如何使用线程? “scanner_api.Scan()”调用实际上是一个不好名称的“BeginScan”调用? – Reddog 2010-06-14 21:23:22