异步访问数据库(经典之二)

 

 

Imports System.Threading
Imports System.Data
Imports System.Data.SqlClient

Public Class Form1


    Public Gint As Integer

#Region "线程 读灯的状态"
    Dim WorkThread As Thread
    Private ThreadTimer As System.Threading.Timer = Nothing
    Private _Flag As Boolean = False

    Sub RunWork()                            '线程工作

        Me._Flag = True
        WorkThread = New Thread(New ThreadStart(AddressOf TestThreadTimer))
        WorkThread.IsBackground = True
        ' WorkThread.Priority = ThreadPriority.AboveNormal
        WorkThread.Name = "mainWorkThread"
        WorkThread.Start()

    End Sub

    Private Sub TestThreadTimer()         '设置自动运行时间

        ThreadTimer = New System.Threading.Timer(New TimerCallback(AddressOf Me.Work), Nothing, 0, 100)

    End Sub

    Private Sub StopThread()                '停止线程

        Me._Flag = False
        ThreadTimer.Dispose()
        If WorkThread IsNot Nothing Then
            Try
                If WorkThread.ThreadState <> Threading.ThreadState.Stopped Then
                    WorkThread.Abort()
                End If

            Catch ex As ThreadAbortException
                Thread.Sleep(500)
                WorkThread.Abort()
            Finally
                WorkThread.Abort()
            End Try
        End If
        WorkThread.Abort()

    End Sub


       Dim k As New TestSaveData
    Dim i As Integer
    Private Sub Work()      '此函数为线程要执行的方法
        k.Save()


        i += 1
        Console.WriteLine("原序号:" & i.ToString)
        Thread.Sleep(500)
    End Sub




#End Region

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        RunWork()
    End Sub

End Class

Public Class TestSaveData
    Public Shared gsum As Integer
    Public Sub Save()
        Dim theConnectionString As String
        theConnectionString = "Data Source=WANGLI;Initial Catalog=newdb;Persist Security Info=True;User ID=sa;pwd =sa;Asynchronous Processing=true"

        Dim theConnection As SqlConnection = New SqlConnection(theConnectionString)

        theConnection.Open()

        Dim strSQL As String = "Select * From tbdata"
        Dim myCommand As New SqlCommand(strSQL, theConnection)

        ' Execute the reader on a second thread. 
        Dim itfAsynch As IAsyncResult
        itfAsynch = myCommand.BeginExecuteReader(CommandBehavior.CloseConnection)

        ' Do something while other thread works. 
        While Not itfAsynch.IsCompleted
            ' Console.WriteLine("Working on main thread...")
            'Thread.Sleep(1000)
        End While
        Console.WriteLine()

        ' All done! Get reader and loop over results. 
        Dim myDataReader As SqlDataReader = myCommand.EndExecuteReader(itfAsynch)
        While myDataReader.Read()
            Console.WriteLine("-> 序号: {0}, 临时号: {1}, 车船号: {2}.", _
                              myDataReader("Id").ToString().Trim(), _
                              myDataReader("序号").ToString().Trim(), _
                              myDataReader("车船号").ToString().Trim())
        End While
        myDataReader.Close()

        gsum += 1
        Console.WriteLine("序号:" & gsum.ToString)
        Console.ReadLine()

    End Sub

End Class


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值