【问题标题】:vb.net class reloads when a subroutine is classed from another class当子例程从另一个类分类时,vb.net 类重新加载
【发布时间】: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 引用传递给主线程,然后使用此引用调用特定的子例程 我试过了,效果很好

【问题讨论】:

    标签: vb.net class reload


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗨,欢迎来到 Stack Overflow,这只是我发送给新成员的一条消息,以帮助一些事情。新用户的学习曲线并不陡峭,但了解如何使用堆栈并不总是显而易见的。请花几分钟看看这里How to Ask 和这里minimal reproducible example .. 另外,如果答案对您有效,请单击答案左侧的勾号,以便将问题标记为已回答并这可以确保发布它的人获得声誉。干杯。
    • 没问题。添加代码可以更轻松地找出问题所在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多