Ошибка выдает исключение при вставке данных с потоком
У меня есть проблема при использовании потока в winform. У меня ошибка при отладке программы.
Мое приложение выдает исключение при запуске программы.
Я определяю class RunInUIThread
является:
private void RunInUIThread(Delegate method)
{
this.BeginInvoke(method);
}
И в методе RunInUIThread, например:
BaiXeBUS baixe = new BaiXeBUS();
RunInUIThread(new ThreadStart(delegate ()
{
BaiXeDTO obj = new BaiXeDTO(); //Map all to define database
txtKhuVucBai.Text = mReader.CurrentCardIDBlock1.ToString();
txtMaThe.Text = mReader.CurrentCardIDBlock2.ToString();
//If I comment all below code. It's work. But I need Insert data to database.
txtKhuVucBai.Text = obj.IDBaiXe.ToString();
txtMaThe.Text = obj.IDRF.ToString();
obj.BienSoXe = textBox1.Text;
obj.HinhBienSo = color.ToString();
obj.HinhChuXe = img.ToString();
obj.ThoiGianVao = DateTime.Now.ToLocalTime();
obj.ThoiGianRa = DateTime.Now.ToLocalTime();
baixe.BaiXe_Insert(obj); //Contain data access layer to insert data with store procedure.
}));
Почему мой код не работает. Кто-то может объяснить мне и как решить проблему? Спасибо всем читателям!!!
2 ответа
Я имею в виду, пытаясь запустить этот блок кода без ThreadStart
{
BaiXeDTO obj = new BaiXeDTO(); //Map all to define database
txtKhuVucBai.Text = mReader.CurrentCardIDBlock1.ToString();
txtMaThe.Text = mReader.CurrentCardIDBlock2.ToString();
//If I comment all below code. It's work. But I need Insert data to database.
txtKhuVucBai.Text = obj.IDBaiXe.ToString();
txtMaThe.Text = obj.IDRF.ToString();
obj.BienSoXe = textBox1.Text;
obj.HinhBienSo = color.ToString();
obj.HinhChuXe = img.ToString();
obj.ThoiGianVao = DateTime.Now.ToLocalTime();
obj.ThoiGianRa = DateTime.Now.ToLocalTime();
baixe.BaiXe_Insert(obj); //Contain data access layer to insert data with store procedure.
}
Это для отладки вашего кода в основном потоке.
@JoelLegaspiEnriquez, вы рекомендовали мне удалить [STAThread]
в Program.cs?
Если я прокомментирую эту строку. Эта проблема в управлении AxLiveX1 является управление ip камеры.
txtKhuVucBai.Text = mReader.CurrentCardIDBlock1.ToString();
Тип Guid с 16 байтами: 8d58d690-6b71-4ee8-85ad-006db0287bf1.
Но я назначаю txtKhuVucBai для типа Guid:
private Guid mCurrentCardIDBlock1;
public Guid CurrentCardIDBlock1
{
get { return mCurrentCardIDBlock1; }
}
MCurrentCardIDBlock1 - это тип считывателя RFID с 32-символьной случайной выборкой.