Die Sache ist, dass der Reader die Webseite nur 2 Mal liest, aber ich brauche etwas mehr.
Wenn ich meinen Reader über die Methode aufrufe:
Code: Select all
public string Meth1()
{
string tvcal = "";
string url = "http://www.nbrb.by/Services/XmlExRates.aspx?ondate=" + dtp1.ToString("MM/dd/yyyy");
XmlReader reader = XmlReader.Create(url);
while (reader.Read())
{
if (reader.Name.Equals("Currency"))
{
reader.MoveToFirstAttribute();
try
{
if (Int32.Parse(reader.Value) == 145)
{
reader.ReadToFollowing("CharCode");
currencyUSD = reader.ReadElementContentAsString();
reader.ReadToFollowing("Name");
currencyUSD += " " + reader.ReadElementContentAsString();
reader.ReadToFollowing("Rate");
currencyUSD += " " + reader.ReadElementContentAsString() + " руб.\n";
tvcal += ("На Дату------" + dtp1.ToShortDateString() + "------\n");
tvcal += (currencyUSD);
}
if (Int32.Parse(reader.Value) == 19)
{
reader.ReadToFollowing("CharCode");
currencyEUR = reader.ReadElementContentAsString();
reader.ReadToFollowing("Name");
currencyEUR += " " + reader.ReadElementContentAsString();
reader.ReadToFollowing("Rate");
currencyEUR += " " + reader.ReadElementContentAsString() + " руб.\n";
tvcal += (currencyEUR);
}
if (Int32.Parse(reader.Value) == 190)
{
reader.ReadToFollowing("CharCode");
currencyRUR = reader.ReadElementContentAsString();
reader.ReadToFollowing("Name");
currencyRUR += " " + reader.ReadElementContentAsString();
reader.ReadToFollowing("Rate");
currencyRUR += " " + reader.ReadElementContentAsString() + " руб.\n";
tvcal += (currencyRUR);
break;
}
}
catch { }
}
}
return tvcal;
}
Aber wenn ich versuche, es zum dritten Mal aufzurufen, bricht es hier ohne Fehler ab:
Code: Select all
while (reader.Read())Zuerst rufe ich die Methode Meth1 in meiner Klasse auf, sie liefert mir ein Ergebnis, dann rufe ich eine andere Klasse auf, die 2 Methoden wie Meth1 enthält, sie erledigen die gleiche Aufgabe, aber für statisches Datum. Und in dem Moment, in dem das Kompilieren zu while (reader.Read()) in der zweiten Methode einer anderen Klasse (dem dritten Objekt von XmlReader) kommt, sendet es das Handle zurück an die Android-Anwendung und bricht nach einigen Sekunden ab.
Ich habe nach einem solchen Problem gesucht, aber nichts gefunden.
Eine andere Anwendung, die unter Windows läuft, funktioniert korrekt mit ähnlichen Klassen und Methoden.
Mobile version