C# Cross thread operation detected.

最近改别人的代码调试时报这个错,调试了蛮久没发现什么问题,百度了下也没发现相应的解决方案。

Thread th = new Thread(new ThreadStart(() =>
{
table.Rows.Clear();
checkSaveData();
BindDataGrid(table);
}));
th.IsBackground = true;
th.Start();

后来经过别人解释才想到大概是什么原因。报错提示的大致意思就是在线程里面操作窗体的控件,当时没发现什么代码在什么地方调用了窗体的控件,

问题是table.Rows.Clear();这行代码,由于窗体中取数时把gridControl的绑定数据源设为table,所以当在线程里把table的所有行Clear掉时,触发了

gridControl的数据变化的事件,等于间接操作了gridControl,所以就报了这个错误,只要把这行代码写到线程的上一行就行了,效果也一样。

时间: 2024-11-06 03:29:24

C# Cross thread operation detected.的相关文章

扩展BindingList,防止增加、删除项时自动更新界面而不出现“跨线程操作界面控件 corss thread operation”异常

在做界面程序时,常常需要一些数据类,界面元素通过绑定等方式显示出数据,然而由于UI线程不是线程安全的,一般都需要通过Invoke等方式来调用界面控件.但对于数据绑定bindingList而言,没法响应listchang事件,导致后端的grid等控件不能更新数据.废了好大的劲终于找到一个UIBindingList,实现线程数据的同步! using System; using System.ComponentModel; using System.Threading; using System.Wi

Windows Error Codes

http://www.briandunning.com/error-codes/?source=Windows Windows Error Codes List All Error Codes | Search Errors: FileMaker Error Codes Lasso Error Codes MySQL Error Codes Windows System Errors About this databaseThis is a free public resource. It is

UNREAL ENGINE 4.12 正式发布!下载地址

UNREAL ENGINE 4.12 正式发布! 下载地址:https://www.unrealengine.com/ Alexander Paschall 在 June 1, 2016 |功能新闻社区 Share on Facebook Share on Twitter Share on Google+ Share on LinkedIn 此版本内含虚幻引擎 4 的数百个更新,以及 GitHub 虚幻引擎开发者社区提交的 106 项改良!特此对虚幻引擎 4.12 版本的贡献者们表达诚挚谢意:

12C ORA-错误汇总18 ORA-57000 to ORA-65535 EXP-00000 to EXP-00114

ORA-57000: TimesTen IMDB error: string Cause: An error occurred during a TimesTen operation. Action: Look up the error code in the TimesTen error documentation to diagnose. 31-2 Oracle Database Error Messages ORA-60001 to ORA-65535 2 3 ORA-60001: add

使用sh-x调试shell脚本

参考:http://blog.chinaunix.net/uid-20564848-id-73502.html 1. 通过sh -x 脚本名  #显示脚本执行过程2.脚本里set -x选项,轻松跟踪调试shell脚本 [以下字段转自:http://linux.chinaitlab.com/SHELL/727128_4.html]"-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具."-x"选项使shell在执行脚本的过程中把它实际执行的每一个命令行显示

OK335xS Splash Screen 移植

/*********************************************************************** * OK335xS Splash Screen 移植 * 说明: * 有时候,每次看到TI的logo自己心里是不爽的,因为本来就是定制的东西, * 为什么还要他的开机Logo呢,于是自己尝试移植编译一下Splash. * * 2016-4-16 深圳 南山平山村 曾剑锋 *****************************************

程序员的量化交易之路(37)--Lean之DataStream数据流7

转载需注明出处:http://blog.csdn.net/minimicall,http://cloudtrade.top 我们之前说明了数据读者,数据槽.将数据读取到队列中,在算法主线程中需要使用DataFeed线程的数据.这是一个典型的读者-写着问题. 在主线程中和DataFeed打教导的事DataStream.下面我们看它的代码.说明在注释中说明了. /* * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.

20150502 调试分析之 使用gdb远程调试ARM开发板

20150502 调试分析之 使用gdb远程调试ARM开发板 2015-05-02 Lover雪儿 今天我们要学习的是使用gdb和gdbserver来远程调试开发板程序. 下面是本人的一些具体步骤: 下载gdb-7.9.tar.gz地址: http://ftp.gnu.org/gnu/gdb/gdb-7.9.tar.gz 安装gdb tar -jxvf gdb-7.9.tar.bz2 ./configure -target=arm-none-linux-gnueabi --prefix=/hom

g++编C++11/C++0x遇到的问题

在看<Cplusplus Concurrency In Action Practical Multithreading>当遇到第一个样品: #include<iostream> #include<thread> void hello() { std::cout<<"hello concurrent world\n"; } int main() { std::thread t(hello); t.join(); } 我安装了g++-4.8版