Şimdi bunu birkaç gün boyunca anlamaya çalışıyorum ve eksik bir şey mi yoksa tamamen yanlış mı olduğunu merak ediyorum.VB.NET Çoklu okuma. Bir sınıftaki bir UI Denetimi üzerinde bir çağrıyı çağırmak, ayrı bir sınıf dosyasındaki
Örnek: İki dosyaları - aşağıdaki gibi görünüyor
TestClass.vb TestClass.vb, myForm.vb:
Imports System.Threading
Public Class TestClass
Private myClassThread As New Thread(AddressOf StartMyClassThread)
Public Sub Start()
myClassThread.Start()
End Sub
Private Sub StartMyClassThread()
myForm.Msg("Testing Message")
End Sub
End Class
myForm.vb bir ile temel bir formdur Liste kutusu kontrolü ve sırasıyla Çıkış ve StartButton adlı bir düğme kontrolü. aşağıdaki formu arkasında kod gibidir:
Public Class myForm
Private classEntity As New TestClass
Private Sub StartButton_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles StartButton.Click
Msg("Start Button Pressed")
classEntity.Start()
End Sub
Delegate Sub MsgCallBack(ByVal mesg As String)
Public Sub Msg(ByVal mesg As String)
If Output.InvokeRequired Then
MsgBox("Invoked")
Dim d As New MsgCallBack(AddressOf Msg)
Invoke(d, New Object() {mesg})
Else
MsgBox("Not Invoked")
mesg.Trim()
Output.Items.Add(mesg)
End If
End Sub
End Class
sonucu:
Uygulama çalıştığında, hiçbir hata veya istisnalar. Görüntülenen liste kutusu ve Başlat düğmesi. Başlat düğmesine bastığımda msgbox beklendiği gibi "Notum" yazıyor ve OK tuşuna bastığınızda "Start Button Pressed" (Başlat Düğmesi Basıldı), Output liste kutusu kontrolüne ekleniyor. Hemen msgbox'ın tekrar açıldığını ve "Çağırılmadı" yazdığını söylüyor. Çıkış liste kutusu denetimini kullanmaya çalışan ayrı bir iş parçacığı olarak "davet edildi" bekliyordum. Elbette bu, çıktı UI denetimini doğrudan güncelleştirmesine izin verilmediği için görünür hiçbir sonuçla sonuçlanmayan Output.Items.Add denenmesiyle sonuçlanır.
Çukur düşmelerini ve yöntemlerini iyice anlamaya çalışan farklı sayfalardaki küçük bir kitap okumalıydım ama insanların yapabileceği bir tuzağa düşmüş olabileceğimi hissediyorum. Şu andaki anlayış ve bilgimle bu tuzaktan çıkamıyorum ve herhangi bir girdi ya da tavsiyeyi takdir edemiyorum.
Saygılarımızla
Lex
Soumya92 - Mükemmel! Çok teşekkür ederim. İtibarın izin verdiği ölçüde 'oy vereceğim'. – Lecronox