Es sind mehrere Wege möglich. Da Sie neu in C# sind und wahrscheinlich eng an die Benutzeroberfläche gekoppelt sind, schlage ich Ihnen vor, die BackgroundWorker-Klasse zu verwenden.
http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx
Sie können Ihre Argumente mit DoWorkEventArgs des DoWork-Ereignisses übergeben. Mit einem solchen Ansatz und ohne gemeinsam genutzte Objekte (durch Threads) können Sie auch die Verwendung von Sperren oder Synchronisierung vermeiden
Ich denke, das könnte die beste Lösung für Sie sein, aber es gibt auch Alternativen. Sie können Asynchronous Programming Model (APM) oder sogar Thread/ThreadPool oder Task Parallel Library verwenden.
Sollte ich nur eine Zustandsvariable mit einer Sperre geschützt verwenden und diese jedes Mal um meine >>Video-Thread abrufen; gibt es andere Empfehlungen?
Wenn Sie einen gemeinsam genutzten Zustand wie einen Video-Thread haben, sollten Sie die Thread-Synchronisierung verwenden. Die Antwort lautet also: Ja, Sie sollten eine geschützte Variable verwenden. Sie können Sperren vermeiden, indem Sie nur volatile verwenden, aber überlegen Sie sich, ob Sie nicht andere Sync-Primitive verwenden sollten. Denn die Verwendung von volatile stellt nur sicher, dass Sie den aktuellsten Wert lesen/schreiben, aber es verhindert nicht, dass andere Threads lesen/schreiben.
Einige Links zu wählen, ob Sperre (andere Primitive) oder nur eine flüchtige zu verwenden:
Muss ich sperren oder markieren als flüchtig beim Zugriff auf eine einfache boolesche Flagge in C#?
Flüchtig vs. Verriegelt vs. Sperre