Avatar
Tayson
Člen
Avatar
Tayson:

Co to znamena ak mi napise takuto chybu ???

Exception of type 'System.OutOf­MemoryExcepti­on' was thrown.

V podstate mam len vytvoreny List

private List<string> string_receive = new List<string>();

a do tohto listu si ukladam staticku premennu z inej triedy ktorej obsahom su retazce roznej velkosti

a pridavanie vyzera takto

string_receive­.Add(communica­tion.received­String);

kde communication je nazov triedy kde je ta staticka premenna ulozena.

Dakujem za rady

 
Odpovědět 12.11.2013 9:50
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Tayson
David Čápka:

"OutOfMemory" již podle názvu znamená, že ti došla paměť ;-) Zřejmě tam cpeš nějaká velká data v cyklu.

Nahoru Odpovědět 12.11.2013 10:02
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Tayson
Člen
Avatar
Odpovídá na David Čápka
Tayson:

No tak to mi doslo ze to bude nieco s pamatou ... necakal som ze par stringov ju dokaze takto zahltit

 
Nahoru Odpovědět 12.11.2013 10:29
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Tayson
David Čápka:

Záleží jak to máš napsané. C# paměť uvolňuje sám, ale jsou situace, kdy to nedělá. Pokud máš server, kde ti stále jede jedna metoda, tak je možné, že po ní neuklidí, protože vlastně nikdy neskončí. Můžeš zkusit občas zavolat GC.Collect(), tím explicitně zavoláš mechanismus, který paměť uvolňuje. Dokud sem ale nevložíš kód, tak na to těžko přijdeme.

Nahoru Odpovědět 12.11.2013 10:36
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Tayson
Petr Nymsa:

Tam to může být něčím jiným. Co přesněji děláš ?

Nahoru Odpovědět 12.11.2013 10:37
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Tayson
Člen
Avatar
Odpovídá na Petr Nymsa
Tayson:

Mam takyto kod spusteny vo vlakne
while(!work)
{
if (!communicati­on.receivedStrin­g.Contains("re­tazec1"))
{
if (communication­.receivedStrin­g.Contains("re­tazec2"))
{
string_receive­.Add(communica­tion.received­String);
}
}
else
{
work=true;
}
}

 
Nahoru Odpovědět 12.11.2013 11:04
Avatar
Tayson
Člen
Avatar
Odpovídá na Tayson
Tayson:

Uzmi to nevypisuje tu vynimku pretoze som tam pridal jednu podmienku a filtrujem data ale problem mam v tomto tu:

string_receive­.Add(communica­tion.received­String);

vlastne pridavam staticku premennu do Listu<> ale mam pocit ze tam zapise stale tu istu hodnotu do celeho Listu

 
Nahoru Odpovědět 12.11.2013 11:59
Avatar
Tayson
Člen
Avatar
 
Nahoru Odpovědět 12.11.2013 12:03
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Tayson
David Čápka:

Jak jsem psal, pokud tam pořád cpeš další a další data a nikdy je nemažeš, tak ti togicky někdy dojde paměť.

Nahoru Odpovědět 12.11.2013 13:17
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Tayson
Člen
Avatar
Odpovídá na David Čápka
Tayson:

Ale prečo mi to do Listu neuklada z tej premennej retazce ... treba vytvorit List<string []> ???

 
Nahoru Odpovědět 12.11.2013 14:54
Avatar
Jan Vargovský
Redaktor
Avatar
 
Nahoru Odpovědět 12.11.2013 15:06
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Tayson
Theodor Johnson:

Protože tam cpeš statiku, tím tam vlastně nacpeš "odkaz" na ten text a jakmile ho změníš a chceš ho znovu uložit tak se změní všechny, protože všechny vedou k tomu jednomu

Nahoru Odpovědět 12.11.2013 15:06
Přecházím na "Cross-Platform Development"
Avatar
Tayson
Člen
Avatar
Odpovídá na Theodor Johnson
Tayson:

No ostane tam posledný uložený text mam pocit a neuloží tam všetky ako chcem. Nevieš mi poradit ako to spravit aby tam ukladalo normálne texty teda celé vety a aby som si mohol potom vytiahnut obsah ? teda chcel by som to takto aby ked dám string_receive[2] aby vypisalo vetu v tom poradi

 
Nahoru Odpovědět 12.11.2013 15:15
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Tayson
David Čápka:

Dokud sem nevložíš celý kód aplikace, tak ti těžko někdo poradí.

Nahoru Odpovědět 12.11.2013 16:06
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Tayson
Člen
Avatar
Odpovídá na David Čápka
Tayson:

Ved kod som vlozil hore ... akurat to mi nejde tak si myslim zeby to malo stacit dokonca si to spustam vo vlakne ... nepotrebujem nic len ukladat data konretne typu string do Listu<string> ale problem je v tom ze sa mi tam asi neukladaju spravne ... tie data su vety ktore maju co ja viem 6 a viac slov a potrebujem si do Listu<> ulozti dajme tomu na prve miesto prvu vetu a tak dalej a potom si to vybrat a zobrazit celu vetu

 
Nahoru Odpovědět 12.11.2013 16:27
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Tayson
Theodor Johnson:

Sice jsi ten kód dal nahoru, ale ne to jak získáš 'communication­.receivedStrin­g'

Nahoru Odpovědět 12.11.2013 20:56
Přecházím na "Cross-Platform Development"
Avatar
Tayson
Člen
Avatar
Odpovídá na Theodor Johnson
Tayson:

To je premenná v triede communication ktorá je verejná a statická a do tejto premennej sa ukladajú prijaté dáta cez UDP protkol. Táto premenná sa dynamicky mení z každými prijatími dátama v cykle while. A volám si ju takto communication­.receivedString

 
Nahoru Odpovědět 12.11.2013 21:20
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.