2017-04-05 8 views
-2

にコールバックを実行し、私はこのように、コールバックを介して画像を返すカメラのAPIを使用しています:は、別のスレッド

camera.StartCapture(ImageEvent); 

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

問題がImageEventは、他の方法が適切に実行させない、と呼ばれ続けていることです。だから、ImageEventを別のスレッドで実行したいのですが、どうすればいいですか?

async/awaitを使用する解決策が望ましいでしょう。

+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'は動的なタイプなので、少し複雑です。しかし、とにかくマルチスレッドを使用することはありません。ありがとう、あなたの時間を無駄にして申し訳ありません –

関連する問題