2017-04-05 71 views
-2

我使用的是通过回调返回图像的摄像机的API,像这样:在不同的线程执行回调

camera.StartCapture(ImageEvent); 

protected void ImageEvent(ManagedImage image) 
{ 
    // do something with the image 
} 

的问题是,ImageEvent不断被调用,不让其他方法正确运行。所以我想在不同的线程中运行ImageEvent,我该怎么做?

使用异步/等待的解决方案将是更可取的。

+1

您可以在另一个线程中运行'StartCapture'。这个'ManagedImage'与UI有什么关系?如果是这样,你会得到一些多线程访问问题。 – Stefan

+0

@Stefan,所以如果我从新线程传递委托,委托方法将在这个新线程中运行?另外,它不是UI相关的。 –

+0

你能解释一下你的'不让其他方法正常运行'问题多一点吗?如果你不显示图像,你是否处理它们并将它们写入磁盘?你有没有检查你的硬盘的活动? – Stefan

回答

1
camera.StartCapture(image => Task.Run(() => ImageEvent(image))); 
+0

但ImageEvent仍然会在主线程中运行。我想避免它在主线程中被调用。 –

+0

@GabrielJ当然,把它放在ImageEvent之外,让我编辑 – MistyK

+0

事实证明这比这更复杂一点,因为'camera'是动态类型的。但是我不会最终使用多线程。谢谢你,遗憾浪费你的时间 –