我正在尝试在foreach
块中的using
迭代器中连接一些数据。不幸的是,出于某种原因,我在using
无法触发后插入(或之后)foreach
块的任何语句。
来源:
static void sensor_DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e)
{
using (var depthFrame = e.OpenDepthImageFrame())
{
if (depthFrame == null)
return;
short[] bits = new short[depthFrame.PixelDataLength];
string bitString = "0";
depthFrame.CopyPixelDataTo(bits);
foreach (var bit in bits)
{
bitString += bit.ToString();
Console.Write("This fires.");
}
Console.Write("This never fires and I don't know why.");
Program.Broadcast(bitString); //this also fails to fire.
}
Console.Write("This never fires either.");
}
答案 0 :(得分:1)
查看代码,没有明显的理由让它不起作用。我怀疑它与using()
块有什么关系。
请检查以下内容:
foreach
循环终止了吗? bits
数组中有多少个元素,写出“This Fires”的次数是多少次?Console.Write()
替换为Console.WriteLine()
?Program.Broadcast(bitString)
的情况下突破循环的唯一方式。尝试将整个函数包装在try
/ catch
/ finally
构造中,并打印出现的任何异常,并且可能在finally
块中打印一条应该打印的消息,无论是否会发生什么。希望有所帮助。
答案 1 :(得分:0)
也许foreach需要太长时间?尝试使用StringBuilder。
StringBuilder bitString = new StringBuilder("0");
depthFrame.CopyPixelDataTo(bits);
foreach (var bit in bits)
{
sb.Append(bit.ToString();
}
Program.Broadcast(bitString.ToString());