【发布时间】:2016-01-22 11:40:57
【问题描述】:
我的 vb.net 程序使用 ClassA 加载。在程序运行期间,我调用了一个创建一些进程的 B 类。在ClassB处理过程中,它调用了一个子程序进入ClassA(主程序窗体类),但是当我这样做时,我发现类A的整个初始化又发生了,即类变量的声明再次开始,NEW子程序再次发生。
- 注意:仅当我从后台工作人员运行 B 类时才会发生这种情况。如果 ClassB 是从 Form1 主线程调用的,没有出现这个错误。
这里是代码:
Public Class Form1
Dim g As String = "adsfadsf"
Public Sub New()
InitializeComponent()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim clsB As New ClassB
clsB.st()
End Sub
Public Sub UpdateView()
' do update here
End Sub
End Class
Public Class ClassB
Public Sub st()
Form1.UpdateView()
End Sub
End Class
有什么反馈吗?
后台工作者似乎是问题所在,因为它失去了对父线程的引用。一种解决方法是将 A 引用传递给主线程,然后使用此引用调用特定的子例程 我试过了,效果很好
【问题讨论】: