Aktywne Wpisy
ogolnie to zabawna historia, z ktorej mozna sporo wyciagnac, stwierdzilem, ze skoro wszystko stracilem, pewnie nie wroce do starych zajec tak szybko, wiec zdecydowalem ze napisze o tym ksiazke o gang stalkingu, bedzie duzo o klamstwie, metodach manipulacji, epidmii narcyzmu, naiwnosci, moralnosci, roli religii, o grach("ze powoduja agresje?" yy nie, o pozytywnym wplywie gier mmorpg na mezczyzn zmagajacych sie z depresja), i wiele innych moze cos wrzuce tu jak zdaze.
niektore motywy
niektore motywy
![sieporobilo](https://wykop.pl/cdn/c0834752/13d16347015c5e0f0e5c0a3096d8e3c58ad327077da3dd4080445dbe5cca5d2b,q60.jpg)
sieporobilo +51
List threadList = new List();
ResponseStreamList[] streamsByCategory = new ResponseStreamList[links.Length];
for (int i = links.Length - 1; i >= 0; i--)
{
//streamsByCategory[i] = GetStreamsFromLink(links[i]);
threadList.Add(new Thread(delegate() {streamsByCategory[i] = GetStreamsFromLink(links[i]); }));
threadList.Last().Start();
}
dlaczego jak odpale kod z komentarza to wszystko jest ok, a jak zamiast niego użyję tych wątków to i jakimś magicznym sposobem przyjmuje wartość -1 i wyrzuca IndexOutOfBounds?
#csharp #naukaprogramowania #dotnet
Innymi słowy - Twoje domknięcie przyjmuje i a nie wartość i. Co powoduje, że jak pętla się skończy to i = -1 i z taką wartością wykonuje się któryś z delegatów, tym samym indeksując tablicę [i], czyli [-1].
Powinno zadziałać jak zrobisz:
for (int i = links.Length - 1; i >= 0; i--)
{
var i2 = i;
//streamsByCategory[i] = GetStreamsFromLink(links[i]);
threadList.Add(new Thread(delegate() {streamsByCategory[i2] = GetStreamsFromLink(links[i2]); }));
threadList.Last().Start();
}
Więcej o async ... await
Przykład wyniku:
źródło: comment_2GwecA7RnTkOcfoZltFqmvgxslJur8xt.jpg
Pobierz