数据库
VB中的多线程?
一、VB中的多线程?
定义: Dim g_ReceiveThread As System.Threading.Thread 创建: g_ReceiveThread = New System.Threading.Thread(AddressOf ReceiveProc) 开始: g_ReceiveThread.Start() 结束: Dim waitStart As Long = My.Computer.Clock.TickCount + 1000 ‘超时 While (g_ReceiveThread.ThreadState <> System.Threading.ThreadState.Stopped) If My.Computer.Clock.TickCount >= waitStart Then g_ReceiveThread.Abort() End If Application.DoEvents() End While
二、vb怎么实现多线程?
方法 1 : CreateThread
不用多说,万变不离其宗,这是 Win32 内创建线程的唯一系统方法,以下介绍的多线程创建方式虽然不直
接接触这个 Win32 APi,但系统也是通过他创建的。
方法 2 : TimerSetEvent
这个函数是 Win32 系统的一个高精度计时器函数,通过调用这个函数,系统会创建一个新的线程,让Timer
回调函数中的代码运行在这个新线程中。
方法 3 : SHCreateThread
很多人应该没见过这个函数,这是 shlwapi.dll 的一个导出函数,这个函数看字面也能理解是个创建多线
程的函数,而且。。。 他是基于对象操作的多线程函数,也就是说他能够稳定的运行一些用上面2种方法创
建,但不能稳定运行的代码。至少这个函数在 IDE 的环境下表现的中规中矩! 使用方法可查 API-GUIDE
方法 4 : 想起来了, CreateRemoteThread
创建远程线程,经测试一点也不稳定,根本没法说下去了,还不如直接调用 CreateThread
但,做为一种线程的创建方法,还是希望能够熟悉一下,如果不用VB写代码,要写跨进程线程,这是一个简单易
行的办法,否则只能继续SetWindowHook了,熟悉汇编指令的还可以远程分配内存写硬编码执行
方法 5 : 简单说下 ActiveX 方式的多线程
论坛里面有用这种方法实现的稳定多线程,代码虽好,但我却不会用,在倡导绿色软件的今天,为了一个多线
程,而注册表里面又要多点xx,不好。。而且卸载麻烦。 用 ActiveX 创建线程与其他方式创建的线程最重
要的地方要主义,任何VB函数的调用最好都建立在新线程中新初始化的对象基础上执行,不要跨对象调用,
而 ActiveX 的安全线程本身也正是利用了这点,不知道研究 ActiveX 的老大们有没注意,利用他特性实
现的多线程,是初始化的一个新的线程,而这个线程中初始化的对象则是整个工程。很大的资源浪费,而且有
时候还不好控制,不是你想要的效果。总之一句话,新线程中要自己初始化新的对象而且最好不要用实例继承
方法 6 : 我的想法
记得以前 CSDN 中有人做过一个代码,通过函数地址抓取函数内的机器码,如果能够知道VB何时已将代码进
行了机器码的转换,然后抓取这些代码放到数组中
三、多线程查询数据库?
Excel文件中的记录比较多的话,要考虑使用多线程。可以考虑使用多线程设计模式中的Producer-Consumer模式。首先,专门开辟一个线程(一个够用,多了无益,以下称之为Reader线程),该线程负责读取Excel文件中的记录。比如使用第三方工具POI,此时读取到的Excel记录是一个Java对象。该线程每次读取到记录都将其存入队列(如ArrayBlockingQueue)。它仅负责读取记录并将其存入队列,其它的事情它不做。其次,再设置若干个线程(如果一个够用,就一个。
数量最好不要超过系统的CPU个数
,以下称为Processor线程),这些线程负责从上述队列中取出记录(对象),然后对记录中的数据进行校验,写入数据库(这里我假设导入的目标是数据库,你的问题中并没有说明导入目标是什么)。最后,Reader线程读取完所以记录之后,要“通知”Processor线程:等你处理完所有记录后,你可以停止了。这点,可以借助多线程设计模式中的Two-phase Termination模式来实现。其主要思想是为要停止的线程(目标线程,这里就是Processor线程)设置一个停止标志,并设置一个表示目标线程的工作任务数(这里值有多少条记录需要它处理)的变量。当目标线程侦测到其待处理的任务数为0,且线程停止标志已置为true的情况下,该线程就可以停止了。Two-phase Termination模式参考这里:Java多线程编程模式实战指南(三):Two-phase Termination模式
。更详细的,可以参考我的新书。最后,相应注意“产品”的粒度。即Reader线程往队列(传输通道)中存入的“产品”是个什么对象,是一条Excel记录,还是多条Excel记录?一般为了减少“产品”在队列中的移动次数(以减少相应开销)要适当将“产品”的粒度设置粗一些。例如,创建一个“容器型”对象用来存储多条记录。四、MYSQL数据库如何多线程?
1。通过线程的互斥来同步操作数据库
2。数据库采用事务处理表中的数据
3。采用共享方式打开数据库,不是以独占方式打开数据库
建立一个mysql连接表加上一个临界区,表结点是这样的(mysqlcon,bool),根据实际情况定大小。我用的是10个连接。
当要进行mysql操作时,就从表中取出一个闲置的mysql连接,并把bool量改为true,使用完后改成false,临界区的做用是保障一个mysql连接一次只能被一个线程使用。
五、delphi多线程读写数据库?
操作数据库之前对表进行lock,操作完后进行解锁。
也可以申请一个互斥变量,每次要操作数据之前申请,结束后释放 前者用的是数据库自己提供的功能,后者是自己控制操作别同时发生。建议用前者。六、vb.net里如何设置多线程?
首先,你把你那些要运行很久的过程。
尽量放在一个过程中。
因为线程只能是过程,不能使函数,没有返回值的。
然后,在某个事件下这样写: **这里我假设你的那个很就的过程叫做 sub aaa() 调用如下: Dim mythread As New System.Threading.Thread(AddressOf aaa) mythread.Start() *********** 这样就是定义一个线程,名字叫 mythread,这个线程会运行aaa这个过程。
start 就是让线程运行。
七、在vb.net中,多线程如何使用?
首先,你把你那些要运行很久的过程。
尽量放在一个过程中。
因为线程只能是过程,不能使函数,没有返回值的。
然后,在某个事件下这样写: **这里我假设你的那个很就的过程叫做 sub aaa() 调用如下: Dim mythread As New System.Threading.Thread(AddressOf aaa) mythread.Start() *********** 这样就是定义一个线程,名字叫 mythread,这个线程会运行aaa这个过程。
start 就是让线程运行。
八、VB能不能实现多线程运行?
VB是不能实现多线程运行的
VB6.0不支持多线程,(指的是线程函数返回后必定Error,除非线程函数不在VB中,而且不能在程序结束前返回) ,本人多种方法尝试,无效,只有一种方法奏效,在C中写一函数,变相调用,结束后暂停线程,使之线程函数不返回
九、vb用什么数据库?
vb连接什么数据库都能用。
1. 但是从支持和稳定方面建议用:access,sqlserver
2. 小型的数据量不大或单机模式:access (小型桌面数据库,对多客户端支持不好)
3.中大型的数据量大或多机模式(多客户端):sqlserver (中大型数据库,多客户端支持好)
4.vb , access,sqlserver 全是微软的产品, 兼容性没得说
5. 看需求:如果需求大可以改成大型数据库 甚至改变开发语言 和 改用开发模式 cs模式改用bs模式等
6.绝对原创,一个字一个字打字。
十、VB ACCESS数据库清空?
窗体上画一command,数据库为a ,表名为b
Private Sub Command1_Click()
Dim msgQk
msgQk = MsgBox("清空数据库将清除所有数据!", 32 + vbOKCancel, "请选择")
If msgQk = 1 Then
Dim cnDel As New ADODB.Connection
Dim rDel As New ADODB.Recordset
Dim sqlDel1 As String
cnDel.Open "DBQ=" & App.Path & "\a.mdb;Driver={Microsoft Access Driver (*.mdb)};"
sqlDel1 = "delete * from b"
cnDel.Execute sqlDel1
MsgBox "数据库清空完成!", 32, "完成"
cndel.close
End If
End Sub
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...