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语句为异步线程指令(理论可行,实际未知。。。)
*