有这样一个结构体
Tgrppic = record
size: integer;
data: array of byte;
end;var grppic: array of Tgrppic;data储存的是一定格式的图片信息(RLE8格式),然后在新线程里面把数据按格式画到内存中一个Tbitmap上面,可是同一段代码多线程执行时会出错,而单线程则不会。想向各位高手大侠请教一下,关于delphi线程同步的问题。如何才能使读到的数据不错误???求解~~
Tgrppic = record
size: integer;
data: array of byte;
end;var grppic: array of Tgrppic;data储存的是一定格式的图片信息(RLE8格式),然后在新线程里面把数据按格式画到内存中一个Tbitmap上面,可是同一段代码多线程执行时会出错,而单线程则不会。想向各位高手大侠请教一下,关于delphi线程同步的问题。如何才能使读到的数据不错误???求解~~
解决方案 »
- 请教怎样把一个excel文件倒入到access表中?
- procedure TForm1.Button1Click(Sender: TObject); 这个(Sender: TObject)参数是啥意思? 可否举个例子
- 数据插入没有反映
- 谁能解决这个问题
- 求关于注册表的问题?
- 连接到Oracle 9i,传统的Win32程序可以连,DLL程序不能连!
- 300分求定时关机原程序,原理。
- 请问在DELPHI中编程怎样打开WORD,EXCEL,。TXT文件并使他们可见?(谢谢)
- byte数组内存共享问题
- 类型转换问题????
- 哪位大侠能否写个 uThreadPool线程池应用的Demo。
- DefaultHandler可以用来拦截消息?
另外要保证每个线程使用该tbitmap的时候其它线程不会也在访问他,所以使用临界区即可,Lz可以参看百度万一的博客,里面有示例的
可以参考
http://www.cnblogs.com/del/category/174761.html
进程不能访问其他进程的内存,一个进程中所有线程共享资源,跨线程访问内存在C#里存在线程保机制时会报错
因为最近在用C#搞混了,抱歉
临界区(其中包含了Synchronize)
http://www.cnblogs.com/del/archive/2009/02/12/1389368.html
互斥
http://www.cnblogs.com/del/archive/2009/02/13/1390295.html
信号量
http://www.cnblogs.com/del/archive/2009/02/14/1390747.html
声明:
var CS: TRTLCriticalSection;
初始化,可在窗体Show时初始化
InitializeCriticalSection(CS); {初始化}
线程中
EnterCriticalSection(CS); //进行临界区
...
synchronize(过程);
...
LeaveCriticalSection(CS); //离开临界区
或者 TRTLCriticalSection
应该可以实现