Używam programu formularzy systemu Windows, który wykonuje wszystkie swoje prace w innym wątku. Po pewnym czasie interfejs użytkownika zawiesza się i przestaje odpowiadać. Wątek w tle nadal działa dobrze (widzę to z wykonanej pracy).Pierwsza szansa wyjątek typu "System.IndexOutOfRangeException" w exe w oknie wyjściowym
mam ten wyjątek:
Pierwsza szansa wyjątek typu 'System.IndexOutOfRangeException' w exe
Kiedy prześledzić linię wyjątku i prowadził ją ponownie, mam to:
Wątek
<No Name>
(0x19b4) został zakończony kodem 0 (0x0).
Linia kodu działa dobrze, ale daje System.IndexOutofRangeException
.
MatchCollection tempcollection = Regex.Matches(document,
"(?<data>More information from(.|\\r|\\n)*?</div>)");
if (tempcollection.Count == 0)
{
return Result;
}
string ThisDiv = tempcollection[0].Groups["data"].Value;
// The above line shows exception in Output Window,
// otherwise it works fine and moves to next line.
UPDATE: Widziałem, że wyjście podaje informacje o każdym wyjątku czy jest on złapany lub nie, myślałem, że jest przyczyną zamrożenia UI, ale to nie jest.
- Uprzejmie pomóż mi pozbyć się tego wyjątku.
- Czy jest to niesprawdzony wyjątek; Dowiedziałem się w moich badaniach, że .Net nie ma niezaznaczonych wyjątków. Wyjaśnij to dla mojego zrozumienia.
Dlaczego nie wstawić linii tempcollection [0] .Groups ["data"]. Wartość wewnątrz instrukcji if "if (tempcollection.Count! = 0)"? Jeśli liczba wynosi 0, "string ThisDiv = tempcollection [0] .Groups [" data "]. Wartość;" rzuci wyjątek "Poza zakresem". –