Abou Chleih

{the magic lies between the brackets}

Menü Schließen

Datum: 18. Januar 2013

[C#/.NET] – Multithreading in .Net 2.0 #1 Starten eines einfachen Threads

Vorweg:
Hier geht es nur um .NET 2.0, neuere Frameworkversionen haben bessere Funktionen und mehr Möglichkeiten.

Beginnen wir:
Was ist Threading?
Es ist es – ungenau betrachtet – eine parallele Abarbeitung von Aufträgen, also einfach ausgedrückt, es wird versucht mehr als eine Sache gleichzeitig zu machen.
Also was ist dann ein Thread?
Sagen wir einfach mal es sei ein Platz an dem Code ausgeführt wird.

Einführung:

Das .Net Framework wurde schon von Grund auf dafür designed, multithreading fähig zu sein.
Ich zitiere hier mal einfach aus dem MSDN:

Der System.Threading-Namespace stellt Klassen und Schnittstellen bereit, die die Programmierung mit mehreren Threads unterstützen und Aufgaben wie das Erstellen und Starten neuer Threads, die Synchronisierung mehrerer Threads sowie das Anhalten und das Abbrechen von Threads vereinfachen.

Laut diesem Abschnitt soll es ganz einfach sein Threads zu starten und zu beenden.
Das ist es auch. Die Schwierigkeit kommt es mit der Abstimmung untereinander, also dem Ressourcenmanagement zwischen Threads.

Wie starte ich einen Thread?

Wie man aus dem MSDN-Artikel entnehmen konnte, wird also der Namespace „System.Threading“ benötigt, welchen wir über

 using System.Threading 

einbinden können.

Nun zum eigentlichen Grundcode eines Threads.
Zuerst müssen wir einen ThreadStart anlegen und definieren, welche Methode er ausführen soll.

ThreadStart startThread = new ThreadStart(myClassObject.myMethod); 

Zwischeninfo: Es wird jetzt auffallen, dass wir der Methode keine Parameter übergeben konnten. Das ist so auch richtig, dazu aber später mehr.

Daraufhin muss man den Thread mit dem ThreadStart als Parameter anlegen:

Thread myThread = new Thread(startThread);

Nun starten wir den Thread ganz einfach mit

myThread.Start(); 

Fortsetzung folgt…

C#/MySQL Alle MySQL Datenbanken auslesen

Ich wollte heute folgende Aufgabe lösen:
Lese alle erstellten MySQL-Datenbanken auf dem Host aus und füge sie einer comboBox hinzu. Im Endeffekt wird dies durch folgenden Code erledigt:

database_comboBox.Items.Clear();
string connectionstring = "SERVER=" + host_textBox.Text + ";" + "UID=" + User_textBox.Text + ";" + "PASSWORD=" + password_textBox.Text+ ";";
MySqlConnection con = new MySqlConnection(connectionstring);
MySqlCommand cmd = con.CreateCommand();
cmd.CommandText = "show databases";
try
{
     con.Open();
     MySqlDataReader reader = cmd.ExecuteReader();
     while (reader.Read())
     {
           string row = "";
           for (int i = 0; i < reader.FieldCount; i++)
                    row += reader.GetValue(i).ToString();
           database_comboBox.Items.Add(row);
     }
     database_comboBox.DroppedDown = true;
}
catch (MySqlException ex)
{
     MessageBox.Show(ex.Message,ex.Source,MessageBoxButtons.OK,MessageBoxIcon.Error);
}

Im connectionstring werden der Host und die Credentials angegeben. In der Regel wird auch die Datenbank angegeben(in unserem Fall natürlich nicht)
MySQL-Command wird logischerweise der SQL-Query angegeben.

© 2018 Abou Chleih. Alle Rechte vorbehalten.

Thema von Anders Norén.