natural sorting klingt echt interessant und jetzt habe ich auch gecheckt, was du wolltest.
wohl ein missverständnis
Oder wenn du ausschließen kannst, dass nach dem _ was anderes als zahlen kommst, könntest du den string auch mit string.Split("_") teilen
Naja, mir war nicht genau so klar, wo dein Problem liegt und nachdem du schon ein Regex-Pattern gepostet hattest, dachte ich, dass du diese Problem schon gelöst hättest.
Du kannst ja den String-Wert in einen Int Wert casten.
Für Reguläre-Ausdrücke gibt es ein klasse Tool (Regex-Lab) von herbivore mit dem man Patterns erstellen / testen kann: Regex-Lab
Das Pattern, mit dem du zum einen den String-Wert (z.B. Affe) und anschließend den numerischen Wert (1) bekommst, lautet: (\w+)_(\d+)
Bei "affe_1" bekommst du somit für den ersten Wert affe und für den zweiten wert die 1.
Ein Regex-Tutorial gibt es hier: Regex Tutorial
So könntest du auch Match-Ergebnisse zu greifen:
Regex myRegex = new Regex("(\\w+)_(\\d+)");
Match myMatch = myRegex.Match(content);
while (myMatch.Success)
{
string stringValue = myMatch.Groups[1].Value;
int digitValue = int.Parse( myMatch.Groups[2].Value)
myMatch = myMatch.NextMatch();
}
Und so hättest du die einzelnen Werte
Nur eine Vermutung. Ist evtl. das erstellen der csv Datei noch nicht beendet, wenn du mittels StreamWriter zugreifst? Also das der Code zu schnell ausgeführt wird?
Testen könntest du es, in dem du den Thread mit Thread.Sleep(1000) für eine Sekunde oder länger kurz schlafen lässt.
Wäre es evlt. sinnvoller, die Datei erst im Speicher zu erstellen und anschließend auf die Platte zu schreiben?
Ich nehme an, dass du mit C# noch nicht so viel Erfahrung gemacht hast. Unter Galileo Open Book steht einiges über Verzweigungen (zb. If) und über Schleifen (zb. do - while).
Um einen weiteren Wert einzulesen musst du eben nochmal eine Zeile aus der Console lesen. Für zahl1 hast du das ja shcon geschafft.
mit &&?
Ja.
Hallo konsole93,
ich glaube ich darf dich bei myCSharp.de Willkommen heißen.
Für die Leserlichkeit wäre es sehr hilfreich, wenn du deinen Code mittels dem
-Tag hervorheben würdest.
[color]Bitte beachtet [URL] Wie poste ich richtig?[/URL] [/COLOR]
Was soll denn mit der zahl2 passieren?
Grüße
DavidG
Wie wäre es, wenn du dir eine Klasse für die einzelne Items baust. In der Klasse hast du ein Feld für den Zahlenwert und ein Feld für den String Wert. Desweiteren implementiert die Klasse das Interface IComparable<T>. Du musst die Methode CompareTo(Item item) ausimplementieren. Dort überprüfen, ob der die Stringwerte gleich sind. Ist dies der Fall, die Zahlenwerte miteinander verlgeichen.
Anschließend kannst du über List.Sort() die Liste sortieren lassen.
z.b.
public class Item : IComparable<Item>
{
private int _digit;
private string _str;
public int Digit
{
get { return _digit; }
set { _digit = value; }
}
public string Str
{
get { return _str; }
set { _str = value; }
}
public int CompareTo(Item other)
{
if(_str.CompareTo(other.Str)== 0)
{
return _digit.CompareTo(other.Digit);
}
return _str.CompareTo(other.Str);
}
}
Moin,
ich wüsste grad keinen feritgen Comparer, der sowas schon kann. (Lasse mich aber auch gerne belehren.
Wie liegen dir die Strings vor? Als List oder Array oder... ?
Trifft auf jeden String das Must item_x (x ist eine Zahl) zu?
Willst du nur nach der Zahl sortieren oder spielt der String, der vor der Zahl steht, auch eine Rolle?
Grüße
DavidG
verwendetes Datenbanksystem: SQL Server 2000
Hallo,
ich muss in einer produktiv Datenbank ein paar neue Tabellen (via DDL-Statements) anlegen, welche nicht weiter komplex sind. Jetzt ist meine Frage, ob der SQL Server 2000 die komplette Datenbank sperrt, sobald neue Tabellen angelegt werden oder ob die Datenbank während dem Anlegen neuer Tabellen verfügbar bleibt.
Vielen Dank
Gruß
David
ich habs. Ich hatte vergessen die FirebirdSql.Data.FirebirdClient.dll mit auf den Server zu kopieren. Jetzt funktioniert es.
Was ich aber nicht ganz verstehe, warum nichts ins Log File geschrieben wurde, weil der Befehl fürs logging ja vor den Firebird-Befehlen kommt.
ja,diese werden erzeugt
mhh...
es sollte ja als erstes in der methode was ins log-file geschrieben werden:
private void InsertResultSet()
{
if (_log.IsInfoEnabled)
{
_log.Info("Start Insert Pop Up");
}
...
aber im log-file wird eben dieser eintrag nicht geschrieben. und die if bedingung ist auch wahr.
ich glaube ich versuche mich mal mit remote debugging zu beschäftigen
was meinst du mit Standard-Konfigurationseigenschaften? steh grad auf dem schlauch.
meinst du damit die settings, die in der app.exe.config drinnen sind? die datei ist auf dem server und auch angepasst.
Auf dem Server habe ich leider keinen Debugger
.Net Framework 2.0
Visual Studio 2008
PC - Windows Vista
Server - Windows 2003
Hallo,
ich habe folgendes Problem:
Ich habe einen Timer. Wenn dieser Timer auslöst, dann soll eine Methode aufgerufen werden, die Daten in eine Datenbank einträgt. Auf meinem Entwicklungs-PC funktioniert das alles wunderbar. Kopiere ich die .exe Datei auf meinen Windowsserver, auf dem die Anwendungen laufen soll, funktioniert der aufruf der Methode nicht. Es wird auch keine Fehlermeldung ausgespuckt, es passiert einfach gar nichts. So als hätte ich einen Breakpoint gesetzt.
Hier ist der Timer-Event-Code:
void _timer_Elapsed(object sender, ElapsedEventArgs e)
{
if (_log.IsInfoEnabled)
{
_log.Info("Timer Elapsed");
}
_timer.Stop();
if (_log.IsInfoEnabled)
{
_log.Info("Before InsertResultSet " + InputWordList.Count.ToString());
}
InsertResultSet();
}
Hier ist der Code, der Methode "InsertResultSet":
private void InsertResultSet()
{
if (_log.IsInfoEnabled)
{
_log.Info("Start Insert Pop Up");
}
if (!InProcess)
{
try
{
InProcess = true;
using(FbConnection fbCon = new FbConnection(Properties.Settings.Default.ConnectionPopUp))
using(FbCommand fbCmd = new FbCommand("INSERT INTO tblInputWords (wordID, quantity, sourceID, point)"+
"VALUES (@wordID,@count,@sourceID, @point)"))
{
fbCon.Open();
FbTransaction fbTra = fbCon.BeginTransaction();
fbCmd.Connection = fbCon;
fbCmd.Transaction = fbTra;
try
{
for(int index = 0; index < InputWordList.Count;)
{
fbCmd.Parameters.AddWithValue("@wordID", InputWordList[index].WordId);
fbCmd.Parameters.AddWithValue("@count", InputWordList[index].Count);
fbCmd.Parameters.AddWithValue("@sourceID", InputWordList[index].SourceID);
fbCmd.Parameters.AddWithValue("@point", InputWordList[index].TimeStamp);
fbCmd.ExecuteNonQuery();
fbCmd.Parameters.Clear();
InputWordList.RemoveAt(index);
}
fbTra.Commit();
}
catch(Exception ex)
{
_log.Fatal(ex.Message + " - " + ex.StackTrace);
}
finally
{
fbTra.Dispose();
fbCon.Close();
}
}
}
catch (Exception ex)
{
_log.Fatal(ex.Message + " - " + ex.StackTrace);
}
finally
{
InProcess = false;
_timer.Start();
}
}
else
{
_timer.Start();
}
}
Wie gesagt, funktioniert der Aufrauf der Methode auf meinem PC ohne Probleme. Auf meinem Server funktioniert das ganze nicht mehr. Alle anderen Funktionalitäten des Programmes funktionieren auf dem Server ohne Probleme. Hat jemand Ideen, an was das liegen könnte?
Vielen Dank
Grüße
Habe ich es richtig verstanden, dass du den Rückgabewert per Event weitergeben willst? Ich sehe da zwei Lösungsmöglichkeiten (Für weitere bin ich offen). Ich weiß allerdings nicht, welche die Bessere ist. Vll kann dazu jmd was sagen.
Also 1: Den Rückgabewert in eine Propertie speicher, dass Event auslösen und die Klasse die das Event abonniert hat, liest die Properite aus:
public class HandScanner
{
private object _rueckgabe;
public object Rueckgabe
{
get { return _rueckgabe;}
}
private void UeberwacheHandScanner()
{
if(_rueckgabe != rueckgabeNeuerPing)
{
_rueckgabe = rueckgabeNeuerPing;
OnChangeEvent();
}
}
public delegate void EventDelegate(object source, EventArgs e);
public event EventDelegate ChangeEvent;
private void OnChangeEvent()
{
if(ChangeEvent != null)
{
ChangeEvent(this, new EventArgs());
}
}
}
public class VerarbeiteRueckgabe
{
public VerarbeiteRueckgabe()
{
_handScanner = new HandScanner;
_handScanner.ChangeEvent += EventDelegate(_handScanner_ChangeEvent);
}
private HandScanner _handScanner;
private void _handScanner_ChangeEvent(object value, EventArgs e)
{
object rueckgabe = _handScanner.Rueckgabe;
}
}
oder 2. den Übergabewert mit ins Event verpacken:
public class HandScanner
{
private void UeberwacheHandScanner()
{
if(rueckgabeAlterPing != rueckgabeNeuerPing)
{
OnChangeEvent(rueckgabeNeuerPing);
}
}
public delegate void EventDelegate(object value, EventArgs e);
public event EventDelegate ChangeEvent;
private void OnChangeEvent(object rueckgabe)
{
if(ChangeEvent != null)
{
ChangeEvent(rueckgabe, new EventArgs ());
}
}
}
public class VerarbeiteRueckgabe
{
public VerarbeiteRueckgabe()
{
_handScanner = new HandScanner;
_handScanner.ChangeEvent += EventDelegate(_handScanner_ChangeEvent);
}
private HandScanner _handScanner;
private void _handScanner_ChangeEvent(object value, EventArgs e)
{
object rueckgabe = value;
}
}
Ich habe den Code nicht getestet. Nur kurz runtergeschrieben. Wie gesagt, so würde ich es lösen, weiß allerdings nicht, welche der Beiden Methoden besser ist.
Klappt wunderbar: 2,3 Mio Einträge in weniger als eine Minute
Danke, werde ich gleich mal ausprobieren.
verwendetes Datenbanksystem: MS SQL Server 2005
Ich habe eine C#-Anwendung mit der ich Daten auf verschiedene Art und Weiße anlysiere. Für eine Analyse verwenden ich den Assoziations-Alogrithmus vom MS Sql Server 2005. Die benötigten Daten selektiere ich davor und lasse sie in eine extra Tabelle eintragen. Dabei handelt es sich um 100000 - 2500000 Einträge.
Meine erste Lösung sah folgendermaßen aus: Die benötigten Daten wurden in eine List<Collection> gespeichert und anschließend via SqlCommand etc. in die DB eingetragen. Der Code sieht wie folgt aus:
public void InsertTmpData(List<MyCol3<string, int, int>> resultList)
{
SqlTransaction sqlTransaction;
using(SqlConnection sqlCon = new SqlConnection(_connection))
{
sqlCon.Open();
sqlTransaction = sqlCon.BeginTransaction();
try
{
using (SqlCommand sqlCmd = new SqlCommand("INSERT INTO tmpData (word,urlId) VALUES (@word,@urlId)"))
{
sqlCmd.Connection = sqlCon;
sqlCmd.Transaction = sqlTransaction;
for (int index = 0; index < resultList.Count; index++)
{
sqlCmd.Parameters.AddWithValue("@word", resultList[index].ValueA);
sqlCmd.Parameters.AddWithValue("@urlId", resultList[index].ValueC);
sqlCmd.ExecuteNonQuery();
sqlCmd.Parameters.Clear();
_tmpIndex = index;
OnIndexEvent();
}
}
sqlTransaction.Commit();
}
catch(Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
sqlTransaction.Rollback();
}
finally
{
sqlCon.Close();
}
}
}
Diese Variante hat bei ca. 2,3 Mio Einträge ca. 30 - 45 min gedauert. Das hat mir persönlich zu lange gedauert und ich habe nach weiteren Lösungmöglichkeiten gesucht. Gestern hatte ich die Idee, die Daten in ein XML File zu speichern und diese XML File anschließend mit einem SSIS-Datenfluss-Prozess in die Datenbank zu transferieren. Und sieh da, das Ganze dauert nicht einmal 3 Minuten. Der SSIS Task, der die Daten aus der XML-Datei in die Datenbank kopiert, brauchte ca. zwei Minuten.
Jetzt meine Frage, warum braucht mein Code 30 - 45 Minuten und der SSIS Task ca. 2 Minuten? Liegt es daran, dass SSIS viel dichter an der DB ist oder habe ich in meinem Code eine Bremse drinnen?
ups - stimmt. hätte ich doch mal richtig lesen sollen 😉
zum beispiel sowas. aber ich bräuchte es als control library oder dll damit ich es in mein projekt integrieren kann.
Hallo,
ich benötige ein Steuerelement, mit dem ich ein Abhängigkeitsnetzwerk - also Objekte die von einer abhängig sind oder irgendwie im Zusammenhang stehen - erstellen lassen kann.
Der Analyse Service von MS SQL Server 2005 beinhaltet ein solches Steuerelement (Dependecy-Network) was für meine Problemstellung perfekt wäre:
Leider biete MS diese Control nicht zur freien Verfügung an. Weiß jemand von, ob irgendwo solch ein Control zu Verwendung angeboten wird (kann auch gerne was kosten)? Ich konnte bis jetzt leider nichts finden.
Oder müsste ich sowas selbst programmieren?
Hallo,
verwendetes Framework .Net 2.0
Ich will XML Dateien mit File.Delete(filename) löschen lassen. Allerdings passiert gar nichts, wenn dieser Befehl ausgeführt wird. Die Datei wir nich gelöscht und es gibt auch keine Fehlermeldung. Hat jemand ein Tipp woran es liegen könnte, dass das File nicht gelöscht wird?
Die XML Dateien werden von einem zweiten Programm erstellt.
Vielen Dank schon mal
Hast du mal in der Toolbox - Rechts Click - Choose Item... (VS Studio 2005) aufgerufen und dort die Komponenten eingefügt?
Ich weiß grad nicht, ob es schon einen fertigen SQL Statement Parser im Framework gibt. Ich glaube mal nicht.
Darum müsstest du dir einen eigenen Parser bauen. Diesen könnte man mit Regulären Ausdrücken verwirklichen oder mit den String.Methoden wie string.IndexOf(), string.Substring(), string.PadRight() etc.
SqlDataAdapter myDataAdapter = new SqlDataAdapter(sqlComand);
myDataAdapter.Fill(DataTable);
Was genau willst du mit dieser Schleife bewirken?
Mir ist nicht bekannt, dass man den Namen einer Variable auf deiner Weise deklarien kann (wenns doch geht dann bescheit geben).
Mir ist auch der Sinn nicht so ganz klar. Zum einen ist die Variable, die du versuchst in der Schleife zu erstellen nur in der Schleife gültig. Das heißt, sobald die Schleife ein weiters mal durchlaufen wird, würde es "bar0", wenn es möglich wäre, nicht mehr geben.
Wenn du dir fünf Werte generien lassen willst, dann verwende doch zur temporären Speicherung eine Collection. Zum Bsp:
List<int> myList =new List<int>();
myList.Add(int-wert)
Im meiner Anwendung, in der ich ZedGraph verwende, lösche ich meinte nicht mehr gebrauchten Kurven mit:
this.ZedGraphControl.GraphPane.CurveList.Clear();
verwendetes Datenbanksystem: MS SQL Server 2005
Framework: 2.0
Hallo,
ich habe ein Tabelle in einer Datenbank, welche ca. 400.000 Begriffe beinhaltet. Jeder Begriff hat eine ID.
In meiner Anwendung lasse ich mir oft zu der ID den Begriff aus der Datenbank auslesen. Es kommt auch vor, dass ich eine Tabelle mit 10.000 Begriffen bzw. den IDs der Begriffe, habe und ich für jeden Eintrag (jede ID) der Tabelle den Begriff benötige. Bis jetzt generiere ich für jede Abfrage ein SELECT Statement. Ich frage mich, ob es evtl. sinnvoll wäre, beim Start der Anwendung alle Begriff in ein Objekt zu laden. Wäre dies Sinnvoll? Wie viel Speicher benötigt eine Objekt, welches 400.000 IDs + "Strings" (max. 100 Zeichen) beinhaltet? Welche Listen/Objekte kämen überhaupt in Frage?
Ich habe leider auf diesem Gebiet noch nicht allzu viel Erfahrung und würde freue mich sehr auf Antworten.
Viele Danke
Grüße
David
Habe es gelöst.
Das Problem bestand darin, dass es sich bei meinem Projekt un ein migriertes .Net 1.1 Projekt handelt und das Form, das ich um ZedGraph erweiteren wollte, war noch ein altes .Net 1.1 Form, bzw. der Aufbau stammte noch aus .Net 1.1 wo ja der Designer generierte Code in der selben Datei liegt wie der Code hinter dem Form. Bei .Net 2.0 ist dies ja nicht mehr der Fall. Anscheinend kommt ZedGraph mit dem Designer-Code irgendwie nicht zurecht.
So musste ich meine Forms neu kreieren und jetzt geht alles wunderbar.
Hallo,
arbeite mit VS2005 und Framework 2.0.
seit heute habe ich folgendes Problem. Ich öffne mein Projekt und will ein Formular in den Editor laden und dabei kommt folgende Fehlermeldung:
The type 'System.Windows.Forms.Label' has no field named 'BackColor'.
Hide Editat System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error(IDesignerSerializationManager manager, String exceptionText, String helpLink)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeAssignStatement(IDesignerSerializationManager manager, CodeAssignStatement statement)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement)
Gestern ging noch alles Wunderbar und seit heute geht es nicht mehr. Ich habe Gestern die Diagramm-Bibliothek ZedGraph hinzugefügt. Könnte das Problem damit im Zusammenhang stehen? Wobei ich gerade die Referenz gelöscht habe - aber das Problem besteht auch ohne ZedGraph.
Kann mir jemand weiterhelfen?
Danke,
Grüße
David
Danke für die Antworten, ich werde dann mal mein Verfahren hier posten, wenn ich fertig bin.
Hallo,
ich lese eine XML Datei ein. Einige der eingelesen Knoten sind in japanischen, koreanischen oder chinesischen (was weiß ich) geschrieben. Ich brauche aber nur die englisch sprachigen Konten. Gibt es eine Möglichkeit, wie ich einen String überprüfen kann, ob er in unserem Alphabet geschrieben ist oder ob dieser STring aus japanischen Schriftzeichen besteht?
Vielen Dank
Ach Mist. Jetzt habe ich meine Fehler. Ich hatte als ObejctValue für den Paramter das Datum in einem String stehen und kein DateTime Object.. Wenn ich den string davor Convertieren lassen, dann funktioniert alles wunderbar.
Danke
Ich arbeite mit Parameter bzw. ParameterCollection. Außer ich verstehe da was falsch und ich habe noch irgendwo einen Fehler drinnen. Ich benutze folgenden Code und damit klappt es nicht, dass das Datum richtig convertiert wird.
sqlCommand command = new SqlCommand("UPDATE tblFeed SET nextCall = @date WHERE feedID = 77");
command.Parameters.Add("@date",dateTime);
command.Connection = myCnn;
mhhh.. ich bekomme langsam das Gefühl, dass ich das doch händisch machen muss....
Da hat man ein zich tausend Euro teuren SQL Server und ich kann ihn nicht sagen, mit was für einem Datumsformat er arbeiten soll bzw. er bekommt es nicht gebacken ein deutsches Datumsformat zu erkenne und auf sein englisches Umzustellen??? Liege ich da etwa richtig??? Ich lasse mich gerne belähren.
arbeite mit parametern... und habe trotzdem das problem. habe auch schon direkt im SQL Server ein Query abgeschickt, welches mir ein Datum updaten sollte... Als Input gab ich ihm '09.08.2006' in der Tabelle stand dann 09/08/2006 drinnen...
Ja, der Sql Server ist von englischer Natur.
Gibt es denn nicht die Möglichkeit, dem Server zusagen, mit was für einem Datumsformat er arbeiten soll? bzw. wenn ich für eine Column den Data Type als DateTime einstelle, kann man dann dort das Format festlegen?
Oder muss ich wirklich das Datum "händisch" umwandeln?
Hallo,
seit ein paar Tage, lasse ich meine Datenbank auf einen SQL Server 2005 laufen.
Nun habe ich gestern folgendes Problem festgestellt:
Wenn ich ein Datum in dem Format dd.MM.yyyy (z.b. 09.08.2006) in die Datenbank schreiben lasse, wandelt der SQL Server das Datum ins folgende Format um MM/dd/yyyy, doch leider macht er aus dem Datum 09.08.2006 -> 09/08/2006, was natürlich ein bisschen blöd ist. Denn danach habe ich das Datum 08.09.2006. D.h. der SQL Server ersetz nur den Punkt durch ein / aber er vertauscht nicht Monat mit Tag.
Ich habe schon versucht, die Ländereinstellungen vom WindowsServer 2003 zuändern. Von Englisch auf Deutsch. Im der Datenbank werden dann auch die Daten im deutschen Format angezeigt, aber das Datum wird immer noch falsche interpretiert.
Weiß jemand, wo ich in dem SQL Server 05 einstellen kann, welches Format ein Datum haben soll?
Viel Dank
Gruß
David
Hallo,
ich habe viele Texte, die ich auf bestimmte Wörter hin durchsuche. Bis jetzt habe ich es mit string.IndexOf(suchWort); gemacht. Doch habe ich festgestellt, dass z.B. wenn ich nach dem Wort 'brand' suche, ich auch ein positvies Ergebniss bei dem Wort 'Sonnenbrand' bekomme.
Wie könnte ich den Texte durchsuchen, dass ich auch nur Wörter mit Wörtern vergeiche und nicht, wie IndexOf es macht, suche, ob ein Wort auch in einem anderen Wort vorkommt (wie brand in Sonnenbrand)?
Ich habe schon an Regex gedacht, doch weiß ich nicht, wie performant Reguläre Ausdrücke sind.
Ich habe mir auch schon überlegt, dass ich den input String per String.Split(new char[] {' '}), splitten lassen könnte und dann jedes ArrayFeld mit dem Suchwort vergleiche.
Was gibt es denn noch so für möglichkeiten oder ist Regex hier die richtige Lösung?
Wenn du spezifisch für den ausgewählten Wert eine Aktion durchführen willst.
switch(domainUpDown.SelectedItem.ToString())
{
case "1":
tue irgendwas
break;
case "2":
tue irgendwas
break;
case "3":
tue irgendwas
break;
....
}
Weitere Beispiele findest du auch über die SuchFunktion in diesem Forum.
Wenn du einfach nur den ausgewählten Wert abspeichern willst, dann würde ich das wie folgt machen:
stream.WriteLine(domainUpDown.SelectedItem.ToString());
oder wenn du noch einen Text davorhaben willst:
stream.WriteLine("Nummer " + domainUpDown.SelectedItem.ToString());
Oder verstehe ich dich falsch?
if (domainUpDown4.SelectedItem == "1")
{
sw.WriteLine("eine 1");
}
ich verstehe noch nicht ganz genau, was du machen willst.
sw.WirteLine(domainUpDown4.SelectedItem.ToString());
Wenn du nur Zahlenwerte hast, dann kannst du auch das NumericaUpDown Control verwendem.
die ganze Methode wird bei einem Form-Aufruf gestart. Jetzt habe ich GC.Collect() eingebaut, wenn das Form geschlossen wird. Und jetzt klappt es. Jetzt kann ich beliebig oft hintereinander diese Form aufrufen.
Kam man GC.Collect für sowas einsetzen oder gibt es schönere Lösungen?
ich habe jetzt am Ende meiner Methode webRequest.Abort(); eingefügt aber beim zweiten durchlauf, der direkt nachdem ersten gestartet wird, kommte immer noch die gleiche fehler meldung!
Hallo,
mit folgendem Code lese ich bestimmte Internetseiten.
WebRequest webRequest = WebRequest.Create(url);
webRequest.Proxy=proxy;
webRequest.Timeout = 5000;
WebResponse myResponse = webRequest.GetResponse();
Stream receiveStream = myResponse.GetResponseStream();
Encoding encode = System.Text.Encoding.Default;
StreamReader readStream = new StreamReader(receiveStream);
Beim ersten Aufruf klappt alles wunderbar. Wenn ich direkt nach getaner Arbeit die Methode nochmals aufrufen, stoppt das Programm an folgender Stelle:
WebResponse myResponse = webRequest.GetResponse();
und es kommt die Fehlermeldung:
"Additional information: The operation has timed-out."
Wenn ich allerdings nach dem ersten Aufruf der Methode ein bischen durch mein Programm klicke oder einfach nur ein bisschen warte und dann wieder diese Methode aufrufe, dann klappt es wieder wunderbar.
Kann es sein, dass das WebRequest Objekt oder das WebResponse Objekt noch vorhanden (Obwohl die Methode schon fertig durchlaufen wurde) ist und deshalb es zu Probleme kommt?
Gruß
David
Danke für eure Hilfe!
Das habe ich ja auch gemacht. Aber wenn ich dann XmlTextReader.Readxxx ausführen lies, kam als Ergebnis nur "" raus... was nicht allzuviel ist.