问题是这样:
我的程序调用一个存储过程,此存储过程的主要任务是处理当前月份数据并执行一些相关操作。存储过程在执行中会向一个日志表中插入数据,表示当前处理到什么地方,目的是在程序过程执行中我在前台页面中用另外一个线程来访问这个表获取存储过程插入的记录并将其显示到页面上。
我在程序中的处理过程是这样:调用存储过程->启动线程获取最新信息并显示。
现在这样处理的话在程序运行中就会提示:label控件属于主线程之类,其它线程无法访问的问题。 我很少使用线程,对线程处理掌握不多。借此机会向大家请教一下。
问题:一、多线程中如何实现这种一个线程获得信息然后让另外一个线程显示?
二、不错的线程知识的文章大家有的给发个连接 谢谢
我的程序调用一个存储过程,此存储过程的主要任务是处理当前月份数据并执行一些相关操作。存储过程在执行中会向一个日志表中插入数据,表示当前处理到什么地方,目的是在程序过程执行中我在前台页面中用另外一个线程来访问这个表获取存储过程插入的记录并将其显示到页面上。
我在程序中的处理过程是这样:调用存储过程->启动线程获取最新信息并显示。
现在这样处理的话在程序运行中就会提示:label控件属于主线程之类,其它线程无法访问的问题。 我很少使用线程,对线程处理掌握不多。借此机会向大家请教一下。
问题:一、多线程中如何实现这种一个线程获得信息然后让另外一个线程显示?
二、不错的线程知识的文章大家有的给发个连接 谢谢
2. MSDN上有例子的
当然,如果不是额外的工作线程,可以使用ThreadPool.Jeffery的最新的那本书<CLR Via C#>这方面介绍得超级详细...
一、我设置了全局变量。给全局变量赋值是没有问题。问题是将这个值要通过标签显示出来时有了上面说的问题。
UI 控件是例外,另外一个Thread不能访问当期Thread的UI控件,除非设置了对应的属性:请问是什么属性?这个属性是控件的还是谁的?
label写成public的 直接给他的属性赋
http://blog.csdn.net/Knight94/archive/2006/08/24/1111267.aspx
CheckForIllegalCrossThreadCalls=false; 命名空间
System.windows.form
http://www.codeproject.com/csharp/#Threads
void Main() {
new Thread(new TreadStart(ProcessData)).Start();
}
void ProcessData() {
// do some data process
Invoke(new MethodInvoke(ProcessControl));
}void ProcessControl() {
// do some control process
}