天 天真 Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-14 #1 现在我要写个DLL,在这个DLL中有一个线程,无时无刻不在监听某个端口,现在让我烦心的是 如何创建一个线程???最好这个线程还能访问PROJECT。DPR中的变量,谢谢了
Y yzhshi Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-14 #3 创建线程还可以,但是线程访问dpr调用文件的变量就比较难了。 给你一个思路。 将所有的主函数的变量(需要动态库访问的)封装在一个结构里面,然后将结构的指针传递给动态库。 这样动态库就能够访问了。 其实就是在主程序里面和动态库中都uses相同的一个pas,里面定义了一个结构,如果是VC调用,那么转换成VC相应的结构就OK了。 其实在动态库中创建线程,我没有做过,不过按道理应该和在exe中一样。
创建线程还可以,但是线程访问dpr调用文件的变量就比较难了。 给你一个思路。 将所有的主函数的变量(需要动态库访问的)封装在一个结构里面,然后将结构的指针传递给动态库。 这样动态库就能够访问了。 其实就是在主程序里面和动态库中都uses相同的一个pas,里面定义了一个结构,如果是VC调用,那么转换成VC相应的结构就OK了。 其实在动态库中创建线程,我没有做过,不过按道理应该和在exe中一样。
天 天真 Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-14 #4 YZHSHI,怎么创建呢? 我总得要有个函数用来创建线程的呀 而不是说,一导入DLL就创建线程了呀:)
Y yzhshi Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-14 #5 噢,这个看你的具体需求了。 你需要什么时候使用多线程,就什么时候建立。 注意:动态库可以有多个对外,你可以调用接口1来连接设备,接口2来创建多线程……
天 天真 Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-14 #6 这个是当然,但是创建该线程的函数写在哪?? DPR文件中???好象不行:(
Y yzhshi Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-14 #9 卸载你的一个调用函数中 procedure create_thread;stdcall begin //创建多线程 end; exports create_thread。 如上不可以吗?
天 天真 Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-14 #10 呵,好象可以了,其实我关键的地方,就是怎么样生成线程? 我用 TLISTDATATHREAD.CREATE() 不行,所以我就问了:) API用得少
Y yzhshi Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-14 #11 这个我也说不清楚了,本来我对线程就很不感冒。 我的问题是: 1、对于动态库中的线程和可执行文件中的线程有区别吗? 2、如果没有区别,你不妨首先在可执行文件里面弄出一个骨架,然后移植。 能给你的建议就这些了,我已经捉襟见肘了(呵呵,可不是热的呀)
这个我也说不清楚了,本来我对线程就很不感冒。 我的问题是: 1、对于动态库中的线程和可执行文件中的线程有区别吗? 2、如果没有区别,你不妨首先在可执行文件里面弄出一个骨架,然后移植。 能给你的建议就这些了,我已经捉襟见肘了(呵呵,可不是热的呀)
Y yzhshi Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-14 #13 那就使用API吧,这个肯定没有区别。 关键是你的动态库做什么? 具体可以参考Delphi的Thread类,注意里面的Synchronize的实现。 这个肯定相同,呵呵。 不过要注意,在线程里面尽量做最少的工作。
那就使用API吧,这个肯定没有区别。 关键是你的动态库做什么? 具体可以参考Delphi的Thread类,注意里面的Synchronize的实现。 这个肯定相同,呵呵。 不过要注意,在线程里面尽量做最少的工作。
天 天真 Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-14 #14 TLISTDATATHREAD.CREATE() 是DELPHI编译通不过的呀
Y yzhshi Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-14 #18 呓?别结束呀,我要告诉你的是: 我刚才实验了,可以正常在Dll里面使用线程! 确实可以,我将Delphi自带的线程例子拿到DLL中了,编译已经通过,只是没有调用执行而已的呀。