Ошибка выдает исключение при вставке данных с потоком

У меня есть проблема при использовании потока в 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-символьной случайной выборкой.

Другие вопросы по тегам