求一个.net多线程读写sqlserver的例子
本人之前没做过多线程的东西,这次因为工作原因要临时抱佛脚,时间要求很急,所以上来求各位高手给个例子看看,要有源码最好。谢谢大家!VB.NET或者C#都可以!
分不够另外开帖子加分!!!!!!!!
也可发邮件给我:haiquan@hichengdu.com, --------------------编程问答--------------------
Private Sub InitingProducts()
'tbClasses.TabPages.Clear()
Dim t As System.Threading.Thread
t = New Thread(AddressOf InitTabClass)
t.IsBackground = True
t.Start()
End Sub
Private Sub InsertPage(ByRef page As TabPage)
tbClasses.TabPages.Add(page)
End Sub
Private Sub InitTabClass()
If Threading.Monitor.TryEnter(_SycObject, 200) Then
'200毫秒内获得锁既刷新
'删除现有的
Me.Invoke(New Execute(AddressOf tbClasses.TabPages.Clear))
Dim conn As OleDbConnection = New OleDbConnection(_ConnectionString)
Dim command As OleDbCommand
Dim strSql As StringBuilder = New StringBuilder()
strSql.Append("select ClassNo, Named from PRODUCT_CLASS where status<>'D'")
Try
conn.Open()
command = New OleDbCommand(strSql.ToString())
command.Connection = conn
Using reader As OleDbDataReader = command.ExecuteReader(CommandBehavior.CloseConnection)
Dim page As TabPage
While reader.Read
page = New TabPage(reader.GetString(1))
page.Name = reader.GetString(0)
page.BackColor = Color.White
InitProductContainer(page, conn)
Me.Invoke(_PageInserter, page)
End While
End Using
Catch ex As Exception
frmMessageBox.ShowBox(ex.Message, ErrTitle, MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
If Not conn Is Nothing Then
conn.Dispose()
End If
Threading.Monitor.Exit(_SycObject)
End Try
End If
End Sub
Private Sub InitProductContainer(ByRef page As TabPage, ByVal conn As OleDbConnection)
For Each controlItem As Control In page.Controls
If controlItem.GetType() Is GetType(ListView) Then
page.Controls.Remove(controlItem)
End If
Next
Dim productContainer As New ListView()
AddHandler productContainer.Click, AddressOf ProductList_DoubleClick
productContainer.Scrollable = True
productContainer.Dock = DockStyle.Fill
productContainer.View = _ProductViewStyle
productContainer.Name = page.Text & "[" & page.Name + "]"
InitProductList(page.Name, productContainer, conn)
page.Controls.Add(productContainer)
End Sub
Private Sub InitProductList(ByVal classId As String, ByRef listContainer As ListView, ByVal conn As OleDbConnection)
Dim command As OleDbCommand
Dim strSql As StringBuilder = New StringBuilder()
strSql.Append("select Named, Barcode from PRODUCTS where ClassNo=@ClassNo and status<>'D' and Account = @Account")
Dim w As Int32 = CInt(Math.Floor((tbClasses.Width - 20) / 2))
listContainer.Columns.Add("商品名称", w, HorizontalAlignment.Left)
listContainer.Columns.Add("条码", w - 50, HorizontalAlignment.Left)
listContainer.LargeImageList = ImageList1
listContainer.SmallImageList = ImageList2
Dim param0 As New OleDbParameter("@ClassNo", classId)
Dim param1 As New OleDbParameter("@Account", GAccount)
command = New OleDbCommand(strSql.ToString())
command.Connection = conn
command.Parameters.Add(param0)
command.Parameters.Add(param1)
Try
Using dr As OleDbDataReader = command.ExecuteReader()
Dim item As ListViewItem
While dr.Read()
item = New ListViewItem(dr.GetString(0))
item.SubItems.Add(dr.GetString(1))
item.ImageKey = "item4.png"
listContainer.Items.Add(item)
End While
End Using
Catch
End Try
End Sub
俺写的一个 --------------------编程问答-------------------- 这个代码没完整啊,我没做过多线程的东西,所以我想运行起来看看,但是太多东西没有定义,你可不可以把你的代码里涉及到数据库连接和图片的东西去掉,然后发一个完整的给我。
非常感谢!
haiquan@hichengdu.com --------------------编程问答-------------------- --------------------编程问答-------------------- 我来学习,帮楼主顶一下. --------------------编程问答-------------------- 如果自己摸索的话,可能要花久一点的时间也可以搞定,但是老板肯定要发飙了!所以让大家见笑啦。。。。。
补充:.NET技术 , C#