我使用EMC Captiva PixTools API开发图像扫描应用程序。 API建议一个简单的长时间循环来在扫描时接收图像,但这将阻止UI线程。
示例:
while(true)
{
Image newImage = Scanner.GetNextImage(); // blocks until image is received
}
我想保证在单独的线程(不是UI线程)上执行,并继续运行直到用户取消它。我还需要将newImage对象返回给主线程,以便将其添加到UI中。
在Windows窗体应用程序中,我使用的是BackgroundWorker,但此代码是从.NET库运行的(然后在Windows窗体应用程序中加载)。
我一直试图了解异步/等待模式,但我不确定是否可以保证在单独的线程上运行任何东西?
有关解决此问题的最佳做法的任何建议吗?
答案 0 :(得分:0)
async / await不保证线程是正确的。但是,Task.Run()确实如此。从这开始:
cordova.system.library.2=com.facebook.android:facebook-android-sdk:4.25.0
或者...
await Task.Run(
() =>
{
while(true)
{
Image newImage = Scanner.GetNextImage();
// ImageReceived(newImage); ?
}
}
);