vb.net class 当一个子例程从另一个 class 中 class 时重新加载

vb.net class reloads when a subroutine is classed from another class

我的 vb.net 程序加载 ClassA。在程序 运行 期间,我调用了一个 Class B 来进行一些处理。在 ClassB 处理过程中,它调用一个子程序进入 ClassA(主程序形式 class),但是当我这样做时,我发现 class 的整个初始化A再次出现,即class变量的DECLARATION再次开始,NEW子程序再次出现。

- 注意:只有当我 运行 Class 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引用传递给主线程,然后使用该引用调用特定的子程序 我试过了,效果很好

有代码吗? (还不能添加评论:/)。

每次在 ClassB 例程中进行引用时,您可能会声明一个新的 ClassA 实例。

如果 ClassA 是某种存储常用功能的模块,您可以做的是将其用作共享 class 和共享方法,如果这是真正的问题。