C# 索引在windows窗体范围内时列表超出范围
我的windows窗体应用程序中有一个奇怪的错误,我得到: 索引超出范围。必须为非负数且小于集合的大小 在代码C# 索引在windows窗体范围内时列表超出范围,c#,.net,winforms,C#,.net,Winforms,我的windows窗体应用程序中有一个奇怪的错误,我得到: 索引超出范围。必须为非负数且小于集合的大小 在代码字节listval=list1[i]处。list1的长度为18,在汽车中显示的list1[i]是正确的值,但代码中有一个错误。这是代码错误还是VisualStudio的小故障 static class Class1 { static List<byte> list1 = new List<byte>(); public static void St
字节listval=list1[i]
处。list1
的长度为18,在汽车中显示的list1[i]
是正确的值,但代码中有一个错误。这是代码错误还是VisualStudio的小故障
static class Class1
{
static List<byte> list1 = new List<byte>();
public static void Start()
{
Thread t = new Thread(new ThreadStart(Process)) { IsBackground = true };
t.Start();
}
static void Action()
{
byte[] array1;
while(true) {
while(list1.Count == 0) {}
array1 = new byte[list1.Count];
for (int i = 0; i < list1.Count; ++i)
{
byte listval = list1[i];
array1[i] = listval;
}
}
}
public static void Add(byte[] data)
{
list1.AddRange(data);
}
}
静态类Class1
{
静态列表list1=新列表();
公共静态void Start()
{
线程t=新线程(新线程开始(进程)){IsBackground=true};
t、 Start();
}
静态空洞作用()
{
字节[]数组1;
while(true){
而(list1.Count==0){
array1=新字节[list1.Count];
对于(int i=0;i
编辑
通过将字节listval=list1[i]更改为字节listval=list1.ToList()[i]对其进行修复 我的钱在“代码错误”上。这个
Action()
永远不会停止执行的事实很好地表明它可能是代码错误。我在这里看到这个而(list1.Count==0){}
,只是想弄清楚它为什么会出现(相对而言)。当暂停完全有效时。虽然(正确){}-我感觉不舒服:(