public void Execute2()
{
int cnt = 0;
IPortReceive pa = new Port <int> ();
IPortReceive pb = new Port <string> ();
ITask task = new Task<int, string> ( (i, s) => { cnt += i + s.Length; });
var mr = new MultipleItemReceiver (task, pa, pb);
var dq = new SerialDispatchQueue ();
mr.TaskQueue = dq;
mr.Execute ();
var a = (Port<int>)pa;
var b = (Port<string>)pb;
a.Post (10);
Assert.AreEqual (0, pa.ItemCount, "#1");
Assert.AreEqual (0, cnt, "#2");
b.Post ("hello");
Assert.AreEqual (15, cnt, "#3");
//it's a one time thing
Assert.AreEqual (0, pa.GetReceivers ().Length, "#4");
Assert.AreEqual (0, pb.GetReceivers ().Length, "#5");
a.Post (1);
Assert.AreEqual (15, cnt, "#6");
b.Post ("x");
Assert.AreEqual (15, cnt, "#7");
}