.net多线程编程,使用委托来更新NotifyIcon,总是会在托盘里多出一个图标来。

.net 多线程编程中,在子线程中使用委托来更新主线程中的NotifyIcon,让它弹出气球提示。总是会在托盘里多出一个图标来。另外,代码中除了在创建委托实现时使用了NEW以外,其他地方没使用过。
请大神解释一下原因,或者提供其他方法,用来在多线程环境下跨线程更新NotifyIcon。要不会多出图标来的。

Public Class Main
Delegate Sub UpdateUI(title As String, tips As String, tspan As Integer)
Public Sub ShowBallTips(title As String, tips As String, tspan As Integer) '提示气球
If Me.InvokeRequired Then
Dim upui As New UpdateUI(AddressOf ShowBallTips)
Me.Invoke(upui, title, tips, tspan)
Else
Me.NotifyIcon1.BalloonTipTitle = title
Me.NotifyIcon1.BalloonTipText = tips
Me.NotifyIcon1.ShowBalloonTip(tspan)
End If
End Sub
End Class
这是委托的代码,调用的时候直接在另外一个线程的代码中调用ShowBallTips("a","b",5000)

要贴出你的代码,不知道你怎么更新的,是不是又创建了一个notifyicon