上下文:
我正在使用一个相对简单的winforms应用程序,该应用程序是在Visual Studio 2010的.NET 3.5框架上用VB.NET编写的。

问题:
打开程序时,FormLoad事件创建两个线程。一个处理自动更新检查,另一个执行与互联网同步文件的耗时任务。这些线程的初始化如下:

   Dim update_check_thread As New Threading.Thread(AddressOf auto_update_check)
   update_check_thread.IsBackground = True
   update_check_thread.Start()

该窗体还使用NotifyIcon控件在任务栏上绘制通知图标。不幸的是,每个启动的线程都会导致应用程序在任务栏上绘制一个额外的图标。在程序打开后使用任何线程功能时,都会绘制其他图标(有时)。

有没有一种方法可以“限制”允许表单绘制的图标数量?我曾尝试将代码移至后台工作人员,但是同一件事继续发生。

提前致谢!

最佳答案

这是VB.NET中常见的一种问题。它支持可怕的“将类名用作对象”语法,例如Form1.Show()。当您使用线程时,这总是会引起麻烦,当在线程上使用时,引用类名会像这样创建Form1类的新实例。另一种形式,它是不可见的,因为它的Show()方法从未被调用过。但是您确实看到了额外的NotifyIcon。您必须解决此问题,它还会引起其他麻烦,因为您认为对可见形式所做的任何操作实际上都发生在不可见形式上。

将Sub New添加到该类中,并在其上设置一个断点以查找执行此操作的代码。

10-08 02:25