वास्तव में कोई जवाब नहीं, एक शोध टिप्पणी।
मैं एक ही समस्या में भाग गया और एक त्वरित परीक्षण किया। मैंने नीचे दिए गए कोड के साथ प्रयास किया और ArgumentException: Destination array was not long enough
फेंकने के लिए यह कोड नहीं मिला। लेकिन जब मैं
return allLines.ToList().ToArray();
लाइन से .ToList()
हटाने इसे तुरंत दुर्घटनाओं।
यह डेमो कोड है और यहां तक कि आईडीई मुझे बताता है, मुझे ToList()
कॉल को अनावश्यक लगता है क्योंकि इसे हटा देना चाहिए।
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace ConsoleApp1
{
class Program
{
static void Main() {
List<string> thelist = new List<string>();
Thread producer = new Thread(() => {
while (true) {
thelist.Add("a" + DateTime.Now);
}
});
Thread transformer = new Thread(() => {
while (true) {
string[] thearray = thelist.ToList().ToArray();
Console.WriteLine(thearray.Length);
}
});
producer.Start();
transformer.Start();
Console.ReadKey(true);
}
}
}
मुझे सच में आश्चर्य है, यह क्यों दुर्घटनाग्रस्त नहीं होगा, क्योंकि सूची को सरणी द्वारा भी समर्थित किया जाता है।
स्रोत
2018-02-12 15:42:29
आपको अपवाद कहां मिलते हैं? क्या आप अपवाद स्टैक ट्रेस के साथ प्रश्न अपडेट कर सकते हैं और सटीक कोड लाइन को इंगित कर सकते हैं जहां इसे फेंक दिया जाता है? –
हां, यह निम्न संदेश है (गड़बड़ी के लिए खेद है): 'सिस्टम पर। एर्रे.कॉपी (ऐरे स्रोतअरे, इंट 32 स्रोत इंडेक्स, ऐरे गंतव्यअरे, इंट 32 गंतव्य इंडेक्स, इंट 32 लम्बाई, बूलियन विश्वसनीय) सिस्टम.एरे.कॉपी पर (सिस्टम में ऑरे स्रोतअरे, इंट 32 स्रोत इंडेक्स, ऐरे गंतव्यअरे, इंट 32 गंतव्य इंडेक्स, इंट 32 लम्बाई) सिस्टम.कोलेक्शन। जेनेरिक.लिस्ट'1.कॉपीटीओ (टी [] सरणी, इंट 32 सरणी इंडेक्स) सिस्टम पर। चयन। जेनरिक.लिस्ट 1। .ctor (IEnumerable'1 संग्रह) MyGame.Player.get_bikesCopy() ' – Geert
पर क्या आप इस समस्या के मूल कारण को प्राप्त करते हैं? मैं कुछ इसी तरह से चल रहा हूँ। –