Фон: У меня есть программа, которая обрабатывает множество записей в базе данных и создает задачи для выполнения. (В этом случае создание учетных записей пользователей в AD). Часть этого заключается в создании пользовательских каталогов, профилей и домашних каталогов и установке разрешений на них. Необходимо подождать, пока учетная запись объявления не будет реплицирована во всех наших DC.Проблемы с Threading в vb.net
Итак, у моей программы будет отдельный поток, ответственный за создание каталогов, которые будут обрабатывать очередь, заполненную из основного потока.
Я сделал некоторые исследования по Threading и придумать следующий шаблон кода:
Imports System.Threading
Public Class Form1
Dim worker As Object
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
worker = New workerObj(AddressOf resultcallback)
Dim t As New Thread(AddressOf worker.mainloop)
End Sub
Public Sub resultcallback(ByVal item As String)
Outbox.AppendText(item)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
worker.addItem(inbox.Text)
End Sub
End Class
Public Delegate Sub resultcallback(ByVal item As String)
Public Class workerObj
Private myQueue As New Queue(Of String)
Private myCallback As resultcallback
Dim item As String = "nout"
Public Sub New(ByVal callbackdelegate As resultcallback)
myCallback = callbackdelegate
End Sub
Public Sub mainloop()
While True
If myQueue.Count > 0 Then
item = myQueue.Dequeue()
myCallBack(item)
End If
Thread.Sleep(5000)
End While
End Sub
Public Sub addItem(ByVal item As String)
myQueue.Enqueue(item)
End Sub
End Class
Проблема: На линии Dim т как новую нить .....
Error 1 Overload resolution failed because no accessible 'New' is most specific for these arguments:
'Public Sub New(start As System.Threading.ParameterizedThreadStart)': Not most specific.
'Public Sub New(start As System.Threading.ThreadStart)': Not most specific. n:\visual studio 2013\Projects\ThreadTest\ThreadTest\Form1.vb 7 13 ThreadTest
Может ли кто-нибудь помочь мне сказать, где я ошибся? Cheers.
вопрос не имеет ничего общего с многопоточности. Перед написанием кода вы должны проверить документацию метода, который вы пытаетесь использовать, и обеспечить его компиляцию. Более того, я предлагаю вам использовать задачи вместо необработанных потоков, поскольку они упрощают параллельное программирование, и они помогают избежать многих проблем с использованием потоков. Например, создание потока дорого, поэтому его следует избегать в пользу использования потоков ThreadPool. Task.Run делает это под обложками –