| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2868 人关注过本帖, 1 人收藏
标题:NetMTVFP(1.02版)
取消只看楼主 加入收藏
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:443
专家分:582
注 册:2013-5-14
结帖率:3.33%
收藏(1)
已结贴  问题点数:20 回复次数:6 
NetMTVFP(1.02版)
*多线程调用实例V1.0(共享)
*20221116
*1.只能传一个参数,不能传送VFP对象,因为他都是字符串([参数1,参数2,参数3...]
*2.线程为单线程单元(STA)模式
*3.线程未完成VFP应该是不能退出(多测几次看会不会崩溃)

*这个实例功能还是很弱鸡,很多功能占时没有开放出来,等我测试好再说,
*最起码要得到线程的结果,一般这个结果可能是一个cursor,或返回值(这些暂时都没有)
*暂时你可以用一个本地的Cursor来共享多线动作后的数据。


*20221117V1.01( 收费版: 398 )
*!*    此时线程尚未处于运行状态。调用Start()函数启动线程,当前线程继续执行。
*!*    调用Join()函数可以阻塞当前线程,直到调用Join()的线程终止。
*!*    Thread类创建的线程默认为前台线程,可以通过IsBackground属性设置其为前台或后台线程。
*!*    还可以通过Priority属性设置线程的优先级。
*!*    如需中止线程,调用Abort()方法,在调用该方法的线程上抛出ThreadAbortException异常,
*!*    以结束该线程。线程内部可以通过try catch捕获该异常,在catch模块中进行一些必要的处理,
*!*    如释放持有的锁和文件资源等,
*!*    还可以通过Thread.ResetAbort()方法阻止线程的中止。
*!*    但是通常来说,应当慎重使用Abort()方法,如果在当前线程中抛出该异常,
*!*    其结果是可预测的,但是对于其他线程,它会中断任何正在执行的代码,有可能中断静态对象的生成,造成不可预测的结果。
* 一般来说线程的多少是根据CPU核心来决定的,并不是越多就越好!多开一个线程可能会吃掉1MB的虚拟内存。

*1.增加 线程多入参
*2.增加 获取 回参
*3.增加 设置线程基本属性
*4.增加 VFP启动线程 指令

*20221119V1.02 ( 收费版: 498 )
*1.增加 获取线程X  中的cursor数据
*注意一次性获取Cursor数据集指令需要足够的内存,因为他是一个VFP数组,你不能把将一个非常大的SQlexec结果集放在线程上,(意思就是放小的结果集)
*原因1:线程肯定没有当前VFP进程性能优越。
*原因2:太大的结果集取回需要大的内存支持,当然你可以使用语句像访问当前“cursor.字段”来访问cursor的结果集。
NetMTVFP.rar (289.03 KB)


*预期:计划直接不用编译VFP 的DLL,可以直接运行任何一个VFP语句为异步线程指令(理论可行,实际未知。。。)
*
搜索更多相关主题的帖子: VFP 结果 线程 cursor 调用 
2022-11-19 13:47
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:443
专家分:582
注 册:2013-5-14
收藏
得分:0 
我知道大楖有!但没有细看他的实现逻辑!你说说原理有些想实现的地方卡着,我也参考参考。。。。。。
2022-11-19 22:14
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:443
专家分:582
注 册:2013-5-14
收藏
得分:0 
以下是引用csyx在2022-11-19 22:50:18的发言:


应该没有可比性
它们都可以吃(vfp 都能用),但原料、味道不一样
vfp2c32 是基于 win32api 的
楼主的产品从名字上看应该是基于 .Net 框架的

不过话说回来,目前的 vfp 版本也被限制在 Windows 平台上,因此区别也就在哪个容易下口、哪个虫子更少

说话好精辟呀!内联ASM C,这个很早就有!大家原理都差不多!个人觉得我写的简单好些!~v~.........,目标不一样
2022-11-19 23:36
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:443
专家分:582
注 册:2013-5-14
收藏
得分:0 
取个线程结果集看看
2022-11-20 10:03
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:443
专家分:582
注 册:2013-5-14
收藏
得分:0 
以下是引用吹水佬在2022-11-20 12:09:54的发言:

是点按住“X”拖出窗口外才放手,不会关掉窗口的。
拖动时看看有没卡住,这不是说是不是多线程的问题,是测试一下消息的影响,点“X”的消息优先级较高。

你不要质疑这个,他是多线的!内联C很早就有,我也有这个源码,但大家目标是不一样的
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2022-11-20 12:20编辑过]

2022-11-20 12:17
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:443
专家分:582
注 册:2013-5-14
收藏
得分:0 
没有什么可比性,不用DLL因为那个会改变VFP的习惯            
。。。。。。,你叫他取个结果集回来,一看性能,二看实现简不简单,不要多,就10W行记录
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2022-11-20 16:20编辑过]

2022-11-20 16:12
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:443
专家分:582
注 册:2013-5-14
收藏
得分:0 
以下是引用foxfans在2022-11-20 16:27:26的发言:

在Vfp WinForm表单上点单X按钮压住不动,试试你的多线程还能不能动。,你这个后台获取数据是基础功,不然失去了多线程的意义,点着还能动,就代表你的其它线程逻辑运行时不受主表单影响,各做各的事,不被影响也不影响主窗口,真正的异步回调结果。另外点击的是你的主表单X,或是VFP开发环境的X不是项目管理器的X。


在Vfp WinForm表单上点单X按钮压住不动,试试你的多线程还能不能动,说实话你说这话水平还没有那个吹水佬高,那消息机制的问题,跟多线有什么关系。。。。
2022-11-22 15:40
快速回复:NetMTVFP(1.02版)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032468 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved