C# WCF 服务越界数组索引

Posted

技术标签:

【中文标题】C# WCF 服务越界数组索引【英文标题】:C# WCF service out of bounds array index 【发布时间】:2018-05-16 20:31:02 【问题描述】:

所以我有一个服务,它实例化一个对象数组,然后为这些对象启动一个新进程。在从另一个线程中的对象获取一些数据之前,我等待实例化和新进程启动。出于某种原因,我在尝试读取数据时超出了边界索引。它似乎试图访问比我定义的索引大 1 的索引(当最后一个索引是 Os [3] 时尝试访问 Os [4]),因此超出了范围?是什么原因造成的?

        lock (initlock)
        
            for (threadNum = 0; threadNum < 4; threadNum++)
            
                Os[threadNum] = new myO();
                Thread TOs[threadNum] = new Thread(new ThreadStart(Os[threadNum].ProcessData));
                TOs[threadNum].Start();
            
        

        lock (initlock)
        
            for (int i = 0; i < 4; i++)
            
                Thread rd[i] = new Thread(new ThreadStart(() => Os[i].GetData());
                rd[i].Start();
            
        

【问题讨论】:

【参考方案1】:
for (int i = 0; i < 4; i++)

    int index = i;
    Thread rd[index] = new Thread(new ThreadStart(() => Os[index].GetData());
    rd[index].Start();

this answer 中的更多信息。

【讨论】:

以上是关于C# WCF 服务越界数组索引的主要内容,如果未能解决你的问题,请参考以下文章

奇怪的数组索引越界异常

Objective-C 对数组进行切片会导致索引越界错误

线性搜索期间二维数组中的数组索引越界错误[关闭]

为啥python的列表切片不会产生索引越界错误? [复制]

越界异常和空指针异常

数组操作的两个常见小问题越界和空指针