Hello,

E have a filter graph rendering a video stream. Pretty simple:

(a) a DataSource object which we made that is a Csource filter puushing
samples into the graph.
(b) a decoder and
(c) a renderer.

The whole thing runs on an STA Thread.

The samples from from the network and are picked up in C#. They are
encoded and are supposed to be tnered into a queue within the
DataSource. For this, the DataSource exposes an interface with a
relevant function call.

Now, internally the DataSource has a list and a mutex plus event to
control acess to the list by the CSourceStream reading thread. THngs
alook good so far.

The data is picked up from the TCP Connection by means of a special
thread pulling the data in.

In order to get the data into the DataSource, I need to invoke on the
"Winforms Thread" where the DataSource has been created. Surely, as the
threading model is STA.

Now, this invoke - blocks. Period.

To my knowledge the only way for this would be if the MessagePump would
be busy doing something else. Totally busy. But the surface of the
program responds. This thread is doing a lot (some DirectShow activity
etc.), but it is always a little available.

The "TCP Pump" thread is also not identical. So invoking into the
Message Pump Thread should work.

Anyone has any ida what deadlocks and what approach I could use to
figure this out?


Regards

Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)

You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to