Tuhaf bir sorun yaşıyorum.Birden Fazla İş Parçacığı Bir işlev çalıştıran VB.net
Kontrol Listemde 3 tane ürün var. Tüm eşyaları kontrol edip düğmem üzerine tıklıyorum. Düğme eşit sayıda iş parçacığı oluşturmalı (işaretli öğe sayısı kadar) ve işaretli öğelerin dizinini bir işleve vermelidir. İşlev kontrol edilenleri konsolda verir.
Public Class Form1
Private ThreadList As New List(Of Threading.Thread)
Private Sub MeineFunktion(ByVal username As String)
Threading.Thread.Sleep(2000)
Console.WriteLine(username)
'Debug.Print(username)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim indexChecked As Integer
For Each indexChecked In CheckedListBox1.CheckedIndices
Dim t As Threading.Thread = New Threading.Thread(Sub() MeineFunktion(indexChecked.ToString))
ThreadList.Add(t)
t.Start()
Next
End Sub
End Class
konudur, konsol her zaman 2
yerine
, 1, 2, 1,
1 verir
İlk öğe neden sürekli göz ardı ediliyor? Ben INTEGER olarak byval kullanıcı adının değiştirilmesi ve bu
Dim t As Threading.Thread = New Threading.Thread(Sub() MeineFunktion(indexChecked))
gibi değerini sneding yapıyor şimdiye kadar
çalıştı Ve yine aynı sorunu yaşamıştır Ne
. Ya iş parçacığımla veya konsol yazıcısını yapan işlevle (hata ayıklama yazdırmayı da denedim) ilgili bir şey var.
Ben Her iş parçacığı oluşturulur ve yayınlanmaya başlaması gereken biraz zamana ihtiyacı konuyu
Bu bir "konsol" uygulaması mı? Ben bir modül göremediğim için soruyorum ... ama Visual Studio Konsolu'nda bulunan konsola yazdırıyorsunuz. Lütfen bunu açıklığa kavuşturun. Tercihen bir "liste kutusu" kullandığınız gibi bir 'winform' uygulaması olduğunu varsayalım ... – Codexer
Bu bir windows uygulamasıdır. Ben şeylerin doğru çalışıp çalışmadığını görmek için konsolu görsel stüdyo konsolumda kullanıyorum. –
Kötü biçim olan yineleme değişkenini kapatıyorsunuz. 'indexChecked', ilk iş parçacığınız başlamadan önce değişiyor. Bunu 'Her' için 'yeni bir yerel * içine kaydetmelisiniz. Dim CurentIndexChecked As Integer = indexChecked' gibi bir şey ekleyin ve 'indexChecked' yerine thread rutininiz için kullanın. –