当前位置:主页>仓库管理软件> 列表

线程安全的问题 找excel制作进销存

记账软件版1楼: 由于处理数据比较费时间,为了不让界面死掉,我用了一个线程专门处理数据,我想知道我这样做是否安全。

1。只在线程中使用了tbitmap,没有显示出来,直接保存为文件了,此时是否要考虑线程安全的问题?

2。线程中对主界面的label控件和listbox控件进行了添加和修改等操作,主界面中没有对label和listbox操作的任何代码,此时是否要考虑线程安全问题?

2楼: 如果仅仅是为了使用一个线程来处理实践,而不让主界面死掉,你可以在线程的构造里把主界面中其他功能关闭,使得只有一个线程在处理数据,而在线程结束的时候把其他功能激活,当然,如果其他的功能不会对你在线程中所操作的一些控件和模块造成影响的话,应该是安全的。 如excel制作进销存

3楼: 线程中对主界面的操作我没用Synchronize,这样安全吗?

4楼: 如果没有对线程中使用的空间的操作应该是安全的

5楼: 一般来讲,多个线程在非线程安全的资源上发生竞争才会导致异常,所以你提到的tbitmap、label、listbox对象都不会有安全问题,但从你描述的功能里,这个线程是为了处理数据的,那这个数据应当是一个全局对象吧,主线程会不会访问这个对象?如果会,就需要加锁。

6楼: 如果只是处理数据
你可以使用互斥对象
得到信号想怎么处理就怎么处理
处理完毕后交回信号
界面内访问数据之前也要得到信号
这样就安全了

记账软件版7楼: 我是在线程中调用主进程中的处理函数的

虽然线程对label和listbox进行操作,主进程没有代码操作,但如果拖动主窗体,刷新主界面的操作,会不会和线程操作的冲突,出现问题呢?

8楼: 使用Application.ProcessMessage就可以了
没有必要使用线程