信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 5406|回复: 10
打印 上一主题 下一主题

[『VB.NET 图文教程』] VB.NET多线程并发处理方式不要说我您还没有掌握到手哦

[复制链接]

780

主题

864

帖子

5536

积分

积分
5536
跳转到指定楼层
宣传软件楼主
发表于 2017-5-13 01:10:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

软件教程首图:

软件教程分类:VB.NET 图文教程 

软件图文教程视频教程分类:软件图文教程 

软件教程难易程度:软件中级教程 

软件教程发布日期:2017-05-13

软件教程关键字:VB.NET多线程并发处理方式不要说我您还没有掌握到手哦

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件定制网站 网址:http://www.postbbs.com

软件教程详细描述
本帖最后由 信息发布软件 于 2017-5-13 01:11 编辑

 ADO.NET 为提高数据密集型(data-intensive)应用程序的性能、简化这类程序的建立过程提供了多种技术。数据集(DataSet )作为ADO.net 对象模型的标志,作为一个微型的、不连接(disconnected)的数据源的副本提供服务。

  虽然使用数据集通过减少对数据库服务器的高花费的访问而提高了性能,但是它也带来了多个用户试图同时访问相同数据的可能性,由此引起数据并发性异常(dataconcurrencyexception)。本文调查了数据并发性异常背后的通常起因,介绍了解决这些问题的技术。

  把数据访问层升级到ADO.NET 有很多好处,其中之一是使用内部数据集对象。

  数据集对象基本上是一个不连接的、内存中的数据库的拷贝。数据集对象包含一个或者多个数据表(DataTable ),每个数据表一般对应于数据库中的一个表。

  数据集提供了很多好处,但也带来一些问题,特别是可能遇到与VB.NET数据并发性异常相关的问题。我建立了一个简单的WindowsForms顾客服务应用程序,用它来解释该问题的潜在的缺陷。本文我将介绍该应用程序并演示怎样解决它所引起的VB.NET数据并发性问题。

  本文建立的顾客服务应用程序示例是使用VisualBasic.NET 和SQLServer2000建立的,但是由于微软。NET 框架组件是语言无关(language-agnostic )的,因此任何与。NET 框架组件兼容的语言都可以使用。同样,由于数据集对象抽象了数据源,数据源的实际执行并不重要;无论下层的数据源是SQLServer 、本地XML 文件或者从一个服务中检索到的数据,数据并发性异常同样会出现。

  数据集的利弊

  数据集提供了很多好处,例如比起数据库层次,它强化了内存中的完整性规则。数据集对象可以定义和强化表之间的关系和列的约束,确保使用的商业规则对数据库没有缺陷。通过数据库抽象,你能建立单个代码集合访问数据集对象而不必考虑填充该数据集的源数据。下层的数据源也许是SQLServer 、Oracle甚至XML 文件。无论下层数据源是什么,代码使用相同的方法与数据集交互。这使你能改变下层数据源而不改变代码。

  但是使用数据集的最大好处是提高了性能。因为数据集与下层数据库断开,代码将更少作数据库的调用,显著地提高了性能。你能向数据集的多个数据表中添加新行、验证每行的有效性和参照完整性。数据适配器(DataAdapter )把数据集连接到下层数据库,能使用一条命令更新下层数据库。每个表中的所有新行都使用命令加入,以确保所有添加到数据库的行都是有效的。

  性能的最优化是有代价的。因为数据集对象与下层数据库断开,经常有机会出现数据没有超期(outofdate )的情况。因为数据集不保存活动数据,只保存当时填充数据集的活动数据的一个快照,与数据并发性相关的问题就会出现。

  数据并发性问题出现在多个用户访问相同的数据并且任何一个用户没有其它用户的信息就能更新数据。这就出现了一个用户偶然更新数据而不知道那些数据已经改变了,不是他在程序中看到的了。幸运的是数据集对象拥有捕获VB.NET数据并发性问题的内建(built-in)支持,因此应用程序能正确地作出反应。


当用户在写出多线程程序的时候,可能最具有挑战性的就是独立的线程和程序的其他的部分有并发性。例如,程序中的一个独立的线程正在处理一系列的名称,而程序的另一个部分必须等待这个线程完成以后才能进行,通常处理VB.NET并发性的线程的办法就是判断线程的状态或者通过一个事件去标志和得到一个特征值。

最简单的,也是效率最低的方法就是判断一个线程的IsAlive属性的值,当一个线程在开始(Start)以前它的属性IsAlive的值是"False",而在它运行的过程中,它的属性IsAlive的值是"True"。这种方法并没有通过一个事件去标志和得到一个特征值可靠,而且如果这样做的庆,也失去了自由线程的很多优点和便利之处。例如:

  • while anotherthread.IsAlive=False
  • '一直等待到该线程开始  
  • End While  
  • '线程已经开始,现在等待它结束  
  • 'While anotherthread.IsAlive=True
  • '等待一直等待到线程结束  
  • End While  
  • '作一些线程结束以后的事情

一个更好的处理线程的VB.NET并发性办法就是使用事件,每一个线程都能够运行一个事件把它自己的状态以一个标志的形式给主程序一个值,或者是给其他一个线程一个具有标志自身状态后个值,这样当多个线程在运行一个过程的多个拷贝的时候,这些线程都具有自己特有的事件来标志各自的状态,则在线程之处的程序的其他的部分,就可以通过运行这些事件,得到线程的信息,并且进行下一步的信息的处理。例如:

  • Public Event Status(Byval
    ThreaStatus As Integer,
    Byval ThreadID As Integer)

VB.NET 提供了SyncLock表述来使得在一个expression中一些statements可以具有VB.NET并发性,这保证了多个线程在运行时不在同一时间里,运行相同的statements,当进入了SyncLock模块,共享的方法System.Monitor.Enter将在特定的expression下运行,一直到这个特定的线程对expression返回的对象有exclusive Lock以后,模块中的代码才会停止运行。


在以前DAO中可以对数据库进行记录锁,页面锁,表锁来处理并发操作,还可以使用事务处理,那么现在怎么用ADO来检测并处理数据库的并发操作呢?

相关背景知识:

ADO中对数据库的也是采用锁定的方法来实现的,还可以用事务来做。事务有个特点就是:要么全成功,要么就全失败。那么在实际工作中有可能只有几条或一小部分的记录有冲突,只要对那一小部分的记录进行处理就行了。ADO也使用锁定来实现。

那么什么是锁定?

锁定是一种进程,DBMS 通过该进程限制多用户环境中对行的访问。当一行或一列被独占锁定时,不允许其他用户在释放锁定之前访问锁定的数据。这确保了两个用户无法同时更新一行中的同一列。

从资源角度而言,锁定的成本可能非常高昂,只有在需要保持数据完整性的情况下才应当使用此功能。在每秒有数百或数千用户试图访问某个记录的数据库(例如连接到 Internet 的数据库)中,不必要的锁定将很快导致应用程序性能的下降。

可选择适当的锁定选项来控制数据源和 ADO 游标库管理并发性的方式。

打开 Recordset 之前先设置 LockType 属性,以指定提供者打开它时使用的锁定类型。读取该属性以返回打开的 Recordset 对象中使用的锁定类型。

提供者可能不支持所有锁定类型。如果提供者不支持请求的 LockType 设置,则替换为另一种锁定类型。若要确定 Recordset 对象中实际可用的锁定功能,将soppurts 方法与 adUpdate 和 adUpdateBatch 一起使用。

如果 CursorLocation  属性设置为 adUseClient,则不支持 adLockPessimistic 设置。如果设置了不支持的值,将不产生错误,而使用所支持的最相近的 LockType。

LockType 属性在 Recordset 关闭时为读/写,而在 Recordset 打开时为只读。

锁定类型种类(LockType 属性):
1.adLockBatchOptimistic
指示开放式批更新。需要批更新模式。

许多应用程序都一次提取多行,然后需要进行相应的更新,这些更新包括所有需要插入、更新或删除的行的完整集合。使用批游标只需一次往返服务器,因而导致更新性能的提高和网络通信量的降低。使用批游标库可创建静态游标,然后断开到数据源的连接。这时就可以对行进行更改,然后重新连接到数据源并将更改以批的形式发布到数据源。

2.adLockOptimistic
提供者使用开放式锁定,仅在调用 Update 方法时锁定记录。这意味着另一个用户有可能会利用您编辑记录和调用 Update 的时间间隔更改数据,这就会引起冲突。而使用此锁定类型时发生冲突的几率很低,即使发生了冲突也会很快得到解决。

3.adLockPessimistic
指示逐个记录保守式锁定。提供者要确保记录编辑成功,通常在编辑之前立即在数据源锁定记录。当然,这意味着一旦您开始编辑记录,这些记录就会对其他用户不可用,知道您通过调用 Update 释放锁定。如果您的系统不提供对数据的并发更改,例如预定系统,那么可使用此锁定类型。

4.adLockReadOnly
指示只读记录。无法改变数据。只读锁定是速度“最快”的锁定类型,因为它不要求服务器保持对记录的锁定。冲突

5.adLockUnspecified
未指定锁定类型。

检测和解决冲突:
如果在立即模式中处理 Recordset,则很少出现并发问题。另一方面,如果应用程序使用批模式更新,则在保存由一个正在编辑记录的用户所作的更改之前,编辑同一个记录的另一个用户比较有可能会更改记录。在这种情况下,需要应用程序准确处理冲突。无论是哪种情况,都可以使用 ADO 提供的 Field 对象的 UnderlyingValue 和 OriginalValue 属性来处理这些类型的冲突。将这些属性与 Recordset 的 Resync 方法和 Filter 属性配合使用。

检测错误:
在批更新期间 ADO 遇到冲突时,将在 Errors 集合中放入警告。因此,调用 BatchUpdate 之后,一定要立即检查是否有错误,如果找到了错误,则应当假设已遇到冲突并开始进行测试。第一步要将 Recordset 的 Filter 属性设置为等于 adFilterConflictingRecords。该设置将使 Recordset对象限制为只显示那些发生冲突的记录。如果这一步之后 RecordCount 属性等于零,就说明错误是由冲突以外的其他原因引起的。

调用 BatchUpdate 时,ADO 和提供者将生成对数据源执行更新的 SQL 语句。下一步,调用 Recordset 的 Resync 方法,并且将 AffectRecords 参数设置为等于 adAffectGroup,将 ResyncValues 参数设置为等于 adResyncUnderlyingValues。Resync 方法将用来自基本数据库中的数据刷新在当前 Recordset 对象中的数据。通过使用 adAffectGroup,可以确保只有使用当前筛选设置的情况下可见的记录(即只有冲突记录)会与数据库重新同步。如果处理的是大型 Recordset,该操作会对性能有较大影响。通过在调用 Resync 时将 ResyncValues 参数设置为 adResyncUnderlyingValues,可以确保 UnderlyingValue 属性将包含数据库中的(冲突)值,并确保 Value 属性仍然是由用户输入的值,还会确保 OriginalValue 属性将持有字段的原始值(即在上一次成功进行 UpdateBatch 调用之前该字段所拥有的值)。然后,可以使用这些值通过编程方式解决冲突,或要求用户选择将要使用的值。

范例:

在调用 UpdateBatch 之前,本范例通过使用单独的 Recordset 来更改基本表中的值,人为地创建一个冲突。

'Begin
    On Error GoTo ErrHandler:   
    Dim objRs1 As New ADODB.Recordset
    Dim objRs2 As New ADODB.Recordset
    Dim strSQL As String
    Dim strMsg As String   
    strSQL = "SELECT * FROM Shippers WHERE ShipperID = 2"’SQL查询
    objRs1.CursorLocation = adUseClient’设置客户端游标
    objRs1.Open strSQL, strConn, adOpenStatic, adLockBatchOptimistic, adCmdText’执行查询生成objrs1记录集
    objRs1("Phone") = "(111) 555-1111"’更改表中一条记录phone字段的值
    objRs2.Open strSQL, strConn, adOpenKeyset, adLockOptimistic, adCmdText’执行查询生成objrs2记录集
    objRs2("Phone") = "(999) 555-9999" ’更改表中记录phone字段的值
    objRs2.Update
    objRs2.Close
    Set objRs2 = Nothing   
    On Error Resume Next
    objRs1.UpdateBatch   
    If objRs1.ActiveConnection.Errors.Count <> 0 Then
        Dim intConflicts As Integer
        intConflicts = 0
        objRs1.Filter = adFilterConflictingRecords
        intConflicts = objRs1.RecordCount
        objRs1.Resync adAffectGroup, adResyncUnderlyingValues
        If intConflicts > 0 Then
           strMsg = "A conflict occurred with updates for " & intConflicts & "records." & vbCrLf & "The values will be restored"                     " to their original values."
           objRs1.MoveFirst
           While Not objRs1.EOF
                strMsg = strMsg & "SHIPPER = " & objRs1("CompanyName") & vbCrLf
                strMsg = strMsg & "Value = " & objRs1("Phone").Value & vbCrLf
                strMsg = strMsg & "UnderlyingValue = " & _
                                   objRs1("Phone").UnderlyingValue & vbCrLf
                strMsg = strMsg & "OriginalValue = " & _
                                   objRs1("Phone").OriginalValue & vbCrLf
                strMsg = strMsg & vbCrLf & "Original value has been restored."
                MsgBox strMsg, vbOKOnly, _
                      "Conflict " & objRs1.AbsolutePosition & _
                      " of " & intConflicts                  
                objRs1("Phone").Value = objRs1("Phone").OriginalValue
                objRs1.MoveNext
            Wend
            objRs1.UpdateBatch adAffectGroup
        Else
            strMsg = "Errors occurred during the update. " & _
                        objRs1.ActiveConnection.Errors(0).Number & " " & _
                        objRs1.ActiveConnection.Errors(0).Description
        End If
        On Error GoTo 0
    End If
    objRs1.MoveFirst
    objRs1.Close
    Set objRs1 = Nothing
Exit Sub
ErrHandler:
    If Not objRs1 Is Nothing Then
        If objRs1.State = adStateOpen Then objRs1.Close
        Set objRs1 = Nothing
    End If
    If Not objRs2 Is Nothing Then
        If objRs2.State = adStateOpen Then objRs2.Close
        Set objRs2 = Nothing
    End If   
    If Err <> 0 Then
        MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
'End
还可以使用当前 Record 的或特定 Field 的 Status 属性来确定已发生的冲突种类。

至此发生冲突的记录检查出来了,那么下一步就是处理失败的更新。

如何解决错误将取决于错误的性质和严重性以及应用程序的逻辑。实际中的数据库大都数是多个用户共享,典型的错误是其他人在你修改某个字段之前先修改了该字段。这种类型的错误称为“冲突”。ADO 将检测这种情况并报告错误。

如果存在更新错误,将被错误处理例程捕获。通过使用 adFilterConflictingRecords 常量来筛选 Recordset,可以只显示发生冲突行。

范例:

本错误解决方案将打印发生冲突的记录中的作者的名和姓(au_fname 和 au_lname)。

'Begin:

objRs.Filter = adFilterConflictingRecords

objRs.MoveFirst
Do While Not objRst.EOF
   Debug.Print "Conflict: Name =  "; objRs!au_fname; " "; objRs!au_lname
   objRs.MoveNext
Loop
'END

如果上述情况用事务来处理的话,那么对于用户数量较大网络较繁忙且更新记录数很多的情况来说将严重影响速度。上述方法只要处理发生错误的记录,这样就减轻了网络传输的负荷,有利提高速度。



unto曾经为了VB.NET导入内容伤透了心原来是我不懂他的文件夹位置nextVB.Net应用到MySQL中二进制棘手的事情都遇到了这些问题了吧
回复

使用道具 举报

0

主题

1025

帖子

1027

积分

积分
1027
信息发布软件沙发
发表于 2017-5-13 14:59:24 | 只看该作者
,很适合我,技术人员也能耐心给于技术上的支持,售后挺不错的。如果有朋友需要这方面的支持,我会介绍过来的。

回复 支持 反对

使用道具 举报

0

主题

660

帖子

654

积分

积分
654
推广工具板凳
发表于 2017-5-19 01:15:58 | 只看该作者
热情的,动作也很利索,要求改进的地方什么的,都会第一时间改好。满分了

回复 支持 反对

使用道具 举报

0

主题

1025

帖子

1027

积分

积分
1027
软件定制开发地板
发表于 2017-5-20 09:38:41 | 只看该作者
改改字就可以了

回复 支持 反对

使用道具 举报

0

主题

2181

帖子

2

积分

积分
2
5#定制软件#
发表于 2017-5-21 18:52:30 | 只看该作者
精良,非常的满意效果。

回复 支持 反对

使用道具 举报

0

主题

652

帖子

686

积分

积分
686
6#定制软件#
发表于 2017-5-26 13:47:12 | 只看该作者
力,好评

回复 支持 反对

使用道具 举报

0

主题

653

帖子

594

积分

积分
594
7#定制软件#
发表于 2017-5-28 20:37:46 | 只看该作者
术人员服务不错耐心热情

回复 支持 反对

使用道具 举报

0

主题

1026

帖子

1111

积分

积分
1111
8#定制软件#
发表于 2017-5-30 01:39:36 | 只看该作者
好好学习了确实不错

回复 支持 反对

使用道具 举报

0

主题

623

帖子

643

积分

积分
643
9#定制软件#
发表于 2017-5-30 05:14:49 | 只看该作者
及时做出评价,系统默认好评!

回复 支持 反对

使用道具 举报

0

主题

605

帖子

589

积分

积分
589
10#定制软件#
发表于 2017-6-2 04:34:59 | 只看该作者
好了,容易上手,有不清楚的客服回答也很及时,功能很强大,很好用,不错,比我之前试用的那家好多了

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
群发软件AIWROK苹果系统打印H5界面日志输出
AIWROK苹果系统打印H5界面日志输出
群发软件H5案例自动化看广告撸金币系统
H5案例自动化看广告撸金币系统
群发软件AIWROK苹果脚本H5任务执行小例子
AIWROK苹果脚本H5任务执行小例子
群发软件AIWROK软件苹果水平容器[Horizontal]小实例
AIWROK软件苹果水平容器[Horizontal]小实例
群发软件AIWROK苹果脚本实例1界面UI输入框类[Input]
AIWROK苹果脚本实例1界面UI输入框类
群发软件AIWROK软件苹果脚本案例1空白站位[Space]方法
AIWROK软件苹果脚本案例1空白站位[Space]方法
群发软件AIWROK软件苹查系统复选框用法
AIWROK软件苹查系统复选框用法
群发软件苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
群发软件AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
群发软件IOS苹果脚本View的完整功能实例
IOS苹果脚本View的完整功能实例
群发软件AIWROK苹果系统实例演示1标签类[Label]方法
AIWROK苹果系统实例演示1标签类[Label]方法
信息发布软件AIWROK软件苹果UI按钮Button方法示例
AIWROK软件苹果UI按钮Button方法示例
信息发布软件AIWROK软件苹果TAB界面视图示例
AIWROK软件苹果TAB界面视图示例
信息发布软件AIWROK苹果系统自带view视图简洁UI界面示例
AIWROK苹果系统自带view视图简洁UI界面示例
信息发布软件汇集HID安卓输入文字的方法和复制粘贴示例
汇集HID安卓输入文字的方法和复制粘贴示例
信息发布软件AIWROK软件找字与OCR方法汇总示例
AIWROK软件找字与OCR方法汇总示例
信息发布软件AIWROK软件找图方法汇总示例
AIWROK软件找图方法汇总示例
信息发布软件AIWROK软件滑动方法集合示例
AIWROK软件滑动方法集合示例
信息发布软件AIWROK软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结
信息发布软件AIWROK软件file文件操作方法小结
AIWROK软件file文件操作方法小结
信息发布软件AIWORK软件配置读写H5演示配套脚本
AIWORK软件配置读写H5演示配套脚本
信息发布软件AIWROK配置读写功能演示示例
AIWROK配置读写功能演示示例
信息发布软件AIWROK截图缓存工具
AIWROK截图缓存工具
信息发布软件AIWROK线程许可证工具
AIWROK线程许可证工具
信息发布软件整理了AIWROK环境下常用的Date对象和sleep对象方法
整理了AIWROK环境下常用的Date对象和sleep对象方法
信息发布软件FastUI界面普通用法
FastUI界面普通用法
信息发布软件FastUI界面类[window]方法小结
FastUI界面类[window]方法小结 方法 1:close(关闭指定窗口)方法 2:closeAll(关闭所有窗口)方法 3:loadUI(加载 UI 界面)方法 4:onClose(监听窗口关闭事件)方法 5:onLoad(监听窗口加载事件)方法 6:setFull(设置窗口全屏)方法 7:setHeight(设置窗口高度)方法 8:setHidden(隐藏窗口)方法 9:setLeft(设置窗口 X 轴坐标)方法 10:setTop(设置窗口 Y 轴坐标)方法 11:setVisable(显示隐藏的窗口)方

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-3-10 23:02 , Processed in 0.350043 second(s), 59 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表