跨线程操作无效:控件''是从不是以窗口形式在其上创建的线程访问的线程

时间:2019-05-24 17:36:58

标签: c# multithreading winforms syncfusion

我的窗口表单应用程序中有2个表单

frmDashboad frmCompany

在frmDashboad表单上有一个按钮,单击该按钮,我会将frmCompany显示为对话框。

这是我的代码。

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

我的frmCompany表格。

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 :(得分:0)

您只需要为FormsfDatagrid设置以下属性false。

  • ShowValidationErrorToolTip