【问题标题】:Copying code from Private Sub to Shared Sub将代码从 Private Sub 复制到 Shared Sub
【发布时间】:2014-12-15 15:30:39
【问题描述】:

我试图在我的 VB 应用程序中每小时运行一堆代码。该代码在它自己的 Sub 中工作,但是当我将它添加到此“TopOfTheHour”共享 Sub 时,我收到错误“无法在没有明确的类实例的情况下从共享方法或共享成员初始化程序中引用类的实例成员"

我在 loadlbl.Visible 中留下了一个不起作用的例子,它只是我的主窗体 (Form1) 上的一个标签控件。将刷新时间写入控制台有效,但 loadlbl.Visible = True 无效。

    Private Shared Sub OnTimedEvent(source As Object, e As System.Timers.ElapsedEventArgs)
    Dim aTimer As System.Timers.Timer = CType(source, System.Timers.Timer)
    aTimer.Stop()
    Console.WriteLine("Server Status Refreshed at " & DateTime.Now)
    loadlbl.Visible = True
    'Far more code is here, much of it with the same error.
    aTimer.Interval = MillisecondsToNextTopOfTheHour()
    aTimer.Start()
End Sub

Form 1 的所有代码(包括我想添加到此共享子程序的代码)都是 PasteBin 上的 here。 (VB语法高亮开启,代码更易阅读)

谢谢!

【问题讨论】:

  • 错误意味着它所说的。如果子是共享/静态的,则不能引用仅在运行时存在的对象,包括(显然)loadLbl 之类的标签。移除 Shared 修饰符。

标签: vb.net shared


【解决方案1】:

您真的需要“共享”此方法吗?删除共享并重试。

共享意味着方法不是实例方法,它无法访问任何局部变量。

【讨论】:

  • Plutonix 是对的 - 我在网页中编辑我的分析器时没有看到这个答案。
  • 谢谢!我认为删除共享会阻止测试 MsgBox 显示,但似乎 MsgBox 只是出现在我打开的另一个窗口下。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 2011-05-02
  • 2017-11-30
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多