Witam,
Mam aplikację napisaną w c# do odczytu bazy danych:
private void fleet_Load(object sender, EventArgs e)
{
listView1.View = View.Details;
listView1.Items.Clear();
Thread t = new Thread(new ThreadStart(odbior));
t.Start();
}
private static void odbior()
{
string id;
while (true)
{
try
{
IDbConnection dbcon;
dbcon = new NpgsqlConnection(BazaZmiennych.GetSettings().connectionString);
dbcon.Open();
IDbCommand dbcmd = dbcon.CreateCommand();
string sql = "Select * FROM samochody WHERE id_usera = '" + BazaZmiennych.GetSettings().id + "'";
dbcmd.CommandText = sql;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
ListViewItem lSingleItem;
lSingleItem = listView1.Items.Add(reader["id"].ToString());
lSingleItem.SubItems.Add((string)reader["nazwasamochodu"]);
id = reader["id_cudaka"].ToString();;
////
try
{
IDbConnection dbcon2;
dbcon2 = new NpgsqlConnection(BazaZmiennych.GetSettings().connectionString);
dbcon2.Open();
IDbCommand dbcmd2 = dbcon2.CreateCommand();
string sql2 = "Select * FROM dane WHERE idcudaka = '1' ORDER by id DESC LIMIT 1";
dbcmd2.CommandText = sql;
IDataReader reader2 = dbcmd2.ExecuteReader();
while (reader2.Read())
{
lSingleItem.SubItems.Add(reader["czas"].ToString());
lSingleItem.SubItems.Add(reader["data"].ToString());
}
reader2.Close();
reader2 = null;
dbcmd2.Dispose();
dbcmd2 = null;
dbcon2.Close();
dbcon2 = null;
}
catch (NpgsqlException ex)
{
System.Text.Encoding enc = Encoding.GetEncoding("Windows-1250");
StreamWriter sw = new StreamWriter("c:\\Logs\\log.log", true, enc);
sw.WriteLine(DateTime.Now.ToShortDateString() + " | " + DateTime.Now.ToLongTimeString() + " :: " + ex);
sw.Flush();
sw.Close();
}
catch (Exception ex)
{
System.Text.Encoding enc = Encoding.GetEncoding("Windows-1250");
StreamWriter sw = new StreamWriter("c:\\Logs\\log.log", true, enc);
sw.WriteLine(DateTime.Now.ToShortDateString() + " | " + DateTime.Now.ToLongTimeString() + " :: " + ex);
sw.Flush();
sw.Close();
}
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbcon.Close();
dbcon = null;
}
catch (NpgsqlException ex)
{
System.Text.Encoding enc = Encoding.GetEncoding("Windows-1250");
StreamWriter sw = new StreamWriter("c:\\Logs\\log.log", true, enc);
sw.WriteLine(DateTime.Now.ToShortDateString() + " | " + DateTime.Now.ToLongTimeString() + " :: " + ex);
sw.Flush();
sw.Close();
}
catch (Exception ex)
{
System.Text.Encoding enc = Encoding.GetEncoding("Windows-1250");
StreamWriter sw = new StreamWriter("c:\\Logs\\log.log", true, enc);
sw.WriteLine(DateTime.Now.ToShortDateString() + " | " + DateTime.Now.ToLongTimeString() + " :: " + ex);
sw.Flush();
sw.Close();
}
Thread.Sleep(5000);
}
}
Zrobiłem wątek “odbior” który powinien uzupełniać mi listvieva danymi, ale niestety nie działa
Wywala błąd:nieprawidłowa operacja między wątkami: “do formatu ‘listview’ uzyskiwany jest dostep z watku innego niz watekw ktorym zostal tworzony”
Wiecie może co jest nie tak??
Mógłby ktoś mi pomóc rozwiązać ten błąd??
Northwest