Multithreaded Applications using C#/.NET Wrapper

Board: XEM3010
I am using the .NET Wrapper provided with the Frontpanel API.

I would like to setup the device as a data monitor for a custom system. I plan to connect the system to the FPGA and stream the data to the computer.

what happens when a function blocks such as ReadFromBlockPipe(…) in one thread, but in another an attempt to talk to the board is initiated such as UpdateWireIns(…) or UpdateWireOuts(…).

Does this asynchronous capability doesn’t exists or perhaps I’m not doing soemthing right? Below is an example of my code.

Is there a way to specify a timeout or even cancel a blocked call to the API?

[CODE]

uint _ep00wire;
uint _ep20wire;
okCFrontPanel _frontPanel;

void start()
{
[INDENT]
_frontPanel = new okCFrontPanel();
// Code to open the device and such here. no issues here

_frontPanel.EnableAsynchronousTransfers(true);
Thread pipeThread = new Thread(_pipeThreadFunc);
Thread wireThread = new Thread(_wireThreadFunc);
pipeThread.Start();
wireThread.Start();

[/INDENT]
}

void _wireThreadFunc()
{
[INDENT]
_frontPanel.SetWireInValue(0x00, _ep00wire);
_frontPanel.UpdateWireIns();
_frontPanel.UpdateWireOuts();
_ep20wire = _frontPanel.GetWireOutValue(0x20);
Thread.Sleep(1000);
[/INDENT]
}

void _pipeThreadFunc()
{
[INDENT]
List bufferCollection = new List(1000);
do
{
[INDENT]
byte] tmp = new byte[1024];
int count = _frontPanel.ReadFromBlockPipeOut(0xA0, 1024, 1024, tmp);
bufferCollection.Add(tmp);
[/INDENT]
}while(true);
[/INDENT]
}[/CODE]