いくつかの方法があります。 C#の初心者であり、おそらくUIに密接に関連しているので、BackgroundWorkerクラスを使用することをお勧めします。
http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx
あなたはDoWorkイベントのDoWorkEventArgsを使用して引数を渡すことができます。 また、このようなアプローチでは、スレッド(スレッド)を使用しない共有オブジェクトを使用しないで、ロックや同期の使用を避けることができます。
私はそれがあなたにとって最適な解決策かもしれないと思います。 Asynchronouse Programming Model(APM)、またはThread/ThreadPool、またはTask Parallel Libraryを使用することができます。
私はロックで保護された状態変数を使用して、この私の>>ビデオスレッドラウンドごとにポーリングする必要があります。その他の推奨事項はありますか?
あなたがスレッドの同期を使用する必要がありますよりも、ビデオ・スレッドのような状態を共有している場合。したがって、答えははいです。保護された変数を使用する必要があります。揮発性を使用してロックを回避できますが、他の同期プリミティブを使用することを検討してください。 volatileを使うと、実際の値を読み書きしていることが保証されますが、他のスレッドが読み書きすることはできません。
ロック(他のプリミティブ)を使用するかどうかを選択するために、いくつかのリンクか、単に揮発性:
Do I need to lock or mark as volatile when accessing a simple boolean flag in C#?
フレームはどのようにシステムに流れますか?スレッドはビデオフレームオブジェクトを作成し、入ってくるストリームをデコードしてGUIにBeginInvokeしますか? –
非UIスレッドでカスタムDirectShowプッシュソースフィルタにコピーされました。 – integra753
DirectShowに固有の場合は、タグを追加する必要があります。 –