You are explicitly adding an object to the call.
Change
object[] obj = new object[1];
obj[0] = outPut;
outputTree.BeginInvoke(new StringDelegate(UpdateScan), obj, Ip.ToString());
to
outputTree.BeginInvoke(new StringDelegate(UpdateScan), outPut, Ip.ToString());