IndexOutofRangeException while using WriteLine in nested Parallel.For loops
Posted
by
Umar Asif
on Stack Overflow
See other posts from Stack Overflow
or by Umar Asif
Published on 2012-11-04T12:56:03Z
Indexed on
2012/11/05
5:00 UTC
Read the original article
Hit count: 268
I am trying to write kinect depth data to a text file using nested Parallel.For loops with the following code. However, it gives IndexOutofRangeException
.
The code works perfect if using simple for loops but it hangs the UI since the depth format is set to 640x480
causing the loops to write 307200 lines
in the text file at 30fps
.
Therefore, I switched to Parallel. For scheme. If I omit the writeLine command from the nested loops, the code works fine, which indicates that the IndexOutofRangeException
is arising at the writeline command. I do not know how to troubleshoot this. Please advise.
Any better workarounds to avoid UI freezing?
Thanks.
using (DepthImageFrame depthImageframe = d.OpenDepthImageFrame())
{
if (depthImageframe == null)
return;
depthImageframe.CopyPixelDataTo(depthPixelData);
swDepth = new StreamWriter(@"E:\depthData.txt", false);
int i = 0;
Parallel.For(0, depthImageframe.Width, delegate(int x)
{
Parallel.For(0, depthImageframe.Height, delegate(int y)
{
p[i] = sensor.MapDepthToSkeletonPoint(depthImageframe.Format,
x, y, depthPixelData[x + depthImageframe.Width * y]);
swDepth.WriteLine(i + "," + p[k].X + "," + p[k].Y + "," + p[k].Z);
i++;
});
});
swDepth.Close();
}
}
© Stack Overflow or respective owner