Es wäre besser den zu setzenden boolschen Wert als Parameter zu übergeben.
und wie geht das wenn das object nur den methodennamen haben will?
Ich glaube das könnte Dir weiterhelfen. Müsstest nur noch an deine Bedürfnisse anpassen.
delegate void DelegateGuiControlEnabled(Control control, bool enabled);
public void GuiControlEnabled(Control control, bool enabled)
{
if (control.InvokeRequired)
{
DelegateGuiControlEnabled d = new DelegateGuiControlEnabled(GuiControlEnabled);
control.Invoke(d, new object[] { control, enabled });
}
control.Enabled = enabled;
}
Danke schon mal für die Hilfe. Ich habe mir jetzt mal die Join() Variante angesehen und versucht ein kleines Beispiel zu schreiben um das ganze besser zu verstehen, was wann abläuft.
Wenn ich das richtig verstanden habe sollte der eine Thread blockieren bis der andere fertig ist oder? Ich habe das Beispiel aus der MSDN zu Join() umzusetzen versucht und mal etwas getestet. Bei meinem Versucht laufen jetzt aber immer beide gleichzeitig. Vermute das ich hier irgendetwas ziemlich falsch verstanden habe.
private void button1_Click(object sender, EventArgs e)
{
AutoResetEvent autoEvent = new AutoResetEvent(false);
Thread regularThread = new Thread(new ThreadStart(ThreadMethod));
regularThread.Start();
ThreadPool.QueueUserWorkItem(new WaitCallback(WorkMethod), autoEvent);
// Wait for foreground thread to end.
regularThread.Join();
// Wait for background thread to end.
autoEvent.WaitOne();
}
private void ThreadMethod()
{
for (int i = 0; i < 1000; i++)
{
Console.WriteLine("ThreadMethod" + i.ToString());
}
MessageBox.Show("ThreadMethod fertig");
}
private void WorkMethod(object stateInfo)
{
for (int i = 0; i < 1000; i++)
{
Console.WriteLine("WorkMethod" + i.ToString());
}
MessageBox.Show("WorkMethod fertig");
// Signal that this thread is finished.
((AutoResetEvent)stateInfo).Set();
}
Hallo!
Ich versuche mich gerade mit Threads zu spielen aber bräuchte ein paar Ideen wie es weiter geht. Mein Thread startet mittlerweile ohne Schwierigkeiten und läuft. Jetzt hätte ich gerne, wenn der Thread zu Ende ist, das anschließend die MessageBox geöffnet wird.
Bei dem Beispiel ist es ja so, dass die MessageBox sofort geöffnet wird. Mir ist schon klar das es so sein muss aber wie kann man das Ende vom Thread abwarten und danach erst weiteren Code ausführen?
private void button1_Click(object sender, EventArgs e)
{
ThreadParameters parameter = new ThreadParameters { sourceDirName = wert1, destDirName = wert2, copySubDirs = wert3 };
thread = new Thread(this.DirectoryCopy);
thread.Start(parameter);
MessageBox.Show("Fertig!");
}
Hallo Flo,
so ich habe es jetzt hin bekommen aber warum es funktioniert ist mir nicht klar. Ich habe aus der XML Datei die erste Zeile("<?xml version="1.0" encoding="utf-8"?>") gelöscht und plötzlich ging alles.
Habe das Beispiel aus der MSDN Doku genommen:
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"<price>19.95</price>" +
"</book>");
XmlNode root = doc.FirstChild;
if (root.HasChildNodes)
{
for (int i=0; i<root.ChildNodes.Count; i++)
{
Console.WriteLine(root.ChildNodes[i].Name);
}
}
Das funktioniert wunderbar und macht bei dem Beispiel genau was ich will. Ändere ich aber "doc.LoadXml" auf
doc.Load(@"C:\temp\tabellen.xml");
passiert nichts mehr. Die "tabellen.xml" Struktur habe ich im ersten Beitrag geschrieben.
Hallo!
Ich habe folgende Struktur in meiner XML Datei.
<?xml version="1.0" encoding="utf-8"?>
<tabellen>
<tabelle1>sdfgf</tabelle1>
<tabelle2>dsfg</tabelle2>
<tabelle3>sdfg</tabelle3>
</tabellen>
Ich würde jetzt gerne als Ausgabe den Namen der Knoten auslesen. Also tabelle1, tabelle2, tabelle3,..
Habe schon einiges versucht aber es funktioniert leider alles nicht. Vielleicht kann mir jemand weiterhelfen?
Gerade gefunden:
bool result = true;
if (result == true)
{
Console.WriteLine("The variable is set to true.");
}
else
{
Console.WriteLine("The variable is set to false.");
}
Einfach ein Klassiker aber lustig finde ich es wo es nämlich herkommt!
Danke! Werde mir das bei Gelegenheit mal durchschauen.
Möchte hier noch meine "Lösung" posten:
Habe das VS deinstalliert inklusive jeglicher Komponenten und auch alle SQL Server Programme entfernt. Danach wieder installiert und alles ging wieder. Ich glaube das Problem lag daran das Komponenten von SQL Server 2005 und 2008 darauf waren und sich VS daran gestört hat.
Nein die funktionieren leider nicht, die hatte ich auch als erstes probiert....
select kw, max(datum1), min(datum2) from x group by kw
erhalte ich ja
kw max(datum1) min(datum2)
40 2009-10-01 2009-09-29ich möchte aber dieses ergebnis
kw max(datum1) min(datum2)
40 2009-10-01 2009-10-02
40 2009-09-29 2009-09-29
Hallo,
kannst du vielleicht ein paar mehr Datensätze zeigen? Mit diesen drei Zeilen ist es nicht erkennbar was du willst und das Ergebnis macht für mich leider auch keinen Sinn.
Bei "group by kw" kannst du nicht mehrere Datensätze mit der kw 40 erwarten.
Hallo,
bin auf der suche nach einem Ereignis aber habe bis jetzt noch nichts passendes gefunden.
Habe ein datengebundenes DGV und je nach Selektion in einer datengebundenen Listbox ladet das Grid neue Daten. Hätte jetzt gerne ein Ereignis das nachdem sich der Inhalt im DGV ändert ausgeführt wird. So etwas muss es wohl geben oder?
Ich arbeite mit dem Visual Studio 2008 Professional.
Wenn ich ich eine Lokale Datenbank(Compact-Edition) hinzufügen möchte bekomme ich vom "Assistent zum konfigurieren von Datenquellen" die Meldung "Fehler beim Abrufen der Informationen aus der Datenbank: Ein Aufrufziel hat einen Ausnahmefehler verursacht."
Ich hatte früher die Express Edition von VS installiert und da funktionierte das hinzufügen immer. Hat jemand eine Idee woher das kommen kann? Habe es auch schon versucht mit einer Reparatur des VS aber leider ohne Erfolg.
Hallo,
vielen dank für die schnelle Antwort! Dann weiß ich jetzt endlich wie man es richtig macht 😉
Hallo,
ich habe schon gesucht aber konnte dazu noch nichts finden und mein schlaues Buch gibt leider auch keine Auskunft.
Wenn ich in meiner Form ein Button erstelle wird gleich in der Form1.Designer.cs das Click Event hinzugefügt. Wenn ich jetzt zb. zu meinen Button noch ein Event haben möchte schreibe ich das dann per Hand in die Form1.Designer.cs oder definiere ich das im Code der Form1.cs??
Bis jetzt habe ich einfach die Events in der Form1.Designer.cs hinzugefügt was auch wunderbar funktionierte. Hatte jetzt aber mal das Problem das ich zu einem DGV ein Event hinzugefügt hatte und jedes mal wenn ich Eigenschaften des DGV geändert hatte, der Event Eintrag gelöscht wurde.
Aufgrund dessen wollte ich mich mal schlau machen was die richtige Vorgehensweise ist.
Hallo,
also Sum kenne ich schon aber mir ist nicht ganz klar wie ich das in mein Beispiel einsetze.
Ich habe aus einem XML File die DataTable gefüllt. Die Ausgabe der Werte des Feldes "zahl"(int32) funktioniert in der Schleife schon mal. Jetzt würde ich aber gerne über alle Datensätze die Summe des Feldes "zahl" errechnen lassen. Komme leider auf keine vernünftige Lösung. Wäre schön wenn mir hier jemand weiter helfen könnte.
DataTable table = dataSet.Tables["testtable"];
IEnumerable<DataRow> query =
from zahl in table.AsEnumerable()
select zahl;
foreach (DataRow p in query)
{
Console.WriteLine(p.Field<Int32>("zahl"));
}
So hab leider einen blödsinn gepostet. Ich meinte natürlich immer "file".
Hallo,
ich versuche gerade dieses Code Konstrukt zu lösen aber ich bekomme es leider nicht zum laufen. Die variable "file" in der letzten Zeile wird so nicht erkannt. Wie schreibt man so etwas am besten wenn man wechselweise ein Argument ein/ausschalten möchte?
...
if ( checkbox_utf8.Checked == true )
{
System.IO.StreamReader file = new System.IO.StreamReader(textbox_open.Text);
}
else
{
System.IO.StreamReader file = new System.IO.StreamReader(textbox_open.Text, Encoding.Default);
}
while ((line = file.ReadLine()) != null)
...
EDIT:
Code korrigiert.
Danke für die schnelle und tolle Hilfe. Funktioniert jetzt alles so wie es soll!
Danke, wieder was dazu gelernt! In meinen Fall ist diese Kennzeichnung aber leider unbrauchbar weil die Dateien in eine Datenbank eingelesen werden und die sich an dem stößt. Kann man BOM beim erstellen neuer Dateien deaktivieren?
Zum Editor: notepad++ benutze ich schon aber der öffnet leider keine Dateien mehr in dieser Größe.
Danke für den Tipp. Löst aber leider noch nicht das Problem mit den Schmierzeichen am Anfang.
Danke für die Infos. Habe es jetzt soweit hinbekommen das es ziemlich flott geht und scheinbar auch in UTF8 heraus kommt.
Jetzt habe ich noch ein Problem das sehr komisch ist. Bei der neu erstellten Datei sind am Anfang Schmierzeichen.
Im Hex sieht es so aus:
ÿþÿþ2
Das Programm sieht jetzt so aus:
StreamReader reader = new StreamReader(@"C:\temp\datei.csv", Encoding.Default);
StreamWriter myFile = new StreamWriter(@"C:\temp\datei.neu.csv", false, Encoding.UTF8);
while ((line = reader.ReadLine()) != null)
{
myFile.Write(line+"\r\n");
progressbar1.PerformStep();
}
myFile.Close();
reader.Close();
Mit dieser Methode habe ich es ganz am Anfang kurz versucht. Ich scheiterte beim schreiben von der neuen Datei weil es einfach extrem lange gedauert hat.
Da hatte ich es so gemacht:
StreamReader reader = new StreamReader(@"C:\temp\datei.csv");
while ((line = reader.ReadLine()) != null)
{
StreamWriter myFile = new StreamWriter(@"C:\temp\datei.neu.csv", true);
myFile.Write(line);
myFile.Close();
}
Hallo,
bin neu hier und habe auch mit C# noch nicht richtig viel Erfahrung.
Ich versuche gerade große Textdateien (1-2 GB) auszulesen in UTF8 umzuwandeln und das ganze in eine neue Datei zu schreiben. Evtl wird dann in manchen Zeilen auch noch Text ersetzt bevor er in die neue Datei geschrieben wird.
string text = System.IO.File.ReadAllText(@"C:\temp\datei.txt", Encoding.Default);
System.IO.File.WriteAllText(@"C:\temp\datei_neu.txt", text, Encoding.UTF8);
Bei kleinen Dateien funktioniert dieser Code mal für das umwandeln in UTF8 aber bei größeren Files bricht das Programm ab.
Arbeite übrigens mit .NET 3.5
Wäre schön wenn mir jemand weiterhelfen könnte.