Недопустимая операция между потоками: элемент управления '' получен из потока, отличного от потока, в котором он был создан, в форме окна - PullRequest
0 голосов
/ 24 мая 2019

У меня есть 2 формы в моем окне формы заявки

frmDashboad и frmCompany .

В форме frmDashboad есть кнопка, и при нажатии этой кнопки я показываю frmCompany в качестве диалога.

Это мой код.

private void btnCompany_Click(object sender, EventArgs e)
     {
       new frmCompany().ShowDialog();
     }

Моя форма компании.

public partial class frmCompany : SfForm
    {
        public frmCompany()
        {
            InitializeComponent();
        }
    }

Теперь, когда я закрываю frmCompany и снова нажимаю кнопку, чтобы снова отобразить диалоговое окно frmCompany, если я повторяю этот процесс 5-6 раз непрерывно, то выдается исключение.

'Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on.'

Это полная трассировка стека.

at System.Windows.Forms.Control.get_Handle()
at System.Windows.Forms.Control.get_InternalHandle()
at System.Windows.Forms.Control.DestroyHandle()
at System.Windows.Forms.Control.Dispose(Boolean disposing)
at System.Windows.Forms.Form.Dispose(Boolean disposing)
at System.ComponentModel.Component.Dispose()
at Syncfusion.Windows.Forms.SfToolTip.Dispose(Boolean disposing)
at System.ComponentModel.Component.Dispose()
at Syncfusion.WinForms.Controls.SfForm.Dispose(Boolean disposing)
at InventorySystem.UI.frmCompany.Dispose(Boolean disposing) in D:\Test\Code Sample\inventory-system\InventorySystem\InventorySystem.UI\frmCompany.Designer.cs:line 20
at System.ComponentModel.Component.Finalize()

Если я заменим SfForm на Form, исключений не будет.

1 Ответ

0 голосов
/ 27 мая 2019

Вам просто нужно установить следующее свойство false для Form или sfDatagrid.

  • ShowValidationErrorToolTip
...