Several ways are possible. As you are new to C# and probably tightly coupled to UI, I suggest you to use BackgroundWorker class.
http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx
You can pass your arguments using DoWorkEventArgs of DoWork event.
Also with such approach and without shared objects (through threads) you can avoid using lock or synchronization
I think it could be best solution for you, but there are alternatives. You can use Asynchronouse Programming Model (APM), or even Thread/ThreadPool, or Task Parallel Library.
Should I just use a state variable protected with a lock and poll this every time round my >>video thread; are there any other recommendations?
If you have shared state like a video thread, than you should use thread synchronization. So, answer will be yes, you should use some protected variable, you can avoid locking by using just volatile, but consider to use other sync primitives. Because using volatile just ensures that you are reading/writing most actual value, but it doesn't prevents other thread from reading/writing.
Some links to choose whether to use lock(other primitives) or just a volatile:
Do I need to lock or mark as volatile when accessing a simple boolean flag in C#?
Volatile vs. Interlocked vs. lock