C#Derefrenced指针需要每次迭代睡眠1毫秒

时间:2015-07-20 09:36:14

标签: c# pointers thread-sleep

我正在编写一种迭代图像像素的方法,并返回每列的总和。图像作为指针数组传入,该指针数组被解除引用并求和。奇怪的是,如果我简单地遍历,每个求和列的值返回为255000(它可能是最大值),但是,如果我添加一毫秒的睡眠,则该数组具有正确的非最大值。

private unsafe int[] SumEachColumn(SharedImg camera, Cvb.Image.VPAEntry*  pVPAT, IntPtr pbase, int startsumposx =0, int endsumposx = 300)
{
    int[] horsum = new int[endsumposx - startsumposx];
    byte* pImageLine;
    for (int y = 0; y < Image.ImageHeight(camera); y++)
    {
        pImageLine = (byte*)(pbase.ToInt64() + pVPAT[y].YEntry.ToInt64());
        for (int x = startsumposx; x<endsumposx; x++)
        {
            horsum[x] += (byte)(255 - *(pImageLine + pVPAT[x].XEntry.ToInt64()));
        }
        //Thread.Sleep(1); //when commented horsum returns 255000 in each cell, when uncommented, returns values ranging from 1500-255000
    }
    return horsum;
}

我对编程很陌生,对这里可能发生的事情感到十分困惑。不幸的是,这应该是在相机上实时运行,因此每帧暂停一秒不是一个可能的解决方案。

0 个答案:

没有答案