void RegisterReceivers()
{
receivers = new ReceiverTask [ports.Length];
remaining = itemCount;
for (int i = 0; i < ports.Length; ++i) {
var rec = new MultiItemReceiverSurrogate (ports [i], this, i);
rec.TaskQueue = TaskQueue;
rec.State = ReceiverTaskState.Persistent;
receivers [i] = rec;
ports [i].RegisterReceiver (rec);
if (remaining == 0)
break;
}
}