nepaluz
asked on
Notifyicon using VB.Net 2010 Express
Hi,
I have a program that utilizes the notifyicon and implements classes with embeded (not sure if this is the correct terminology) background workers.
My question is, whenever the backgroundworker is invoked, the program creates another notifyicon in the taskbar. And this keeps on happening whenever the worker is invoked. Initially, when I hover over the icons, they seem to have the sameproperties as intended and "hold fort", however, after sometime (possibly 20 seconds or more), if I hover over them,they disappear.
Has anyone come accross this and / or how can I stop this behaviour?
I have a program that utilizes the notifyicon and implements classes with embeded (not sure if this is the correct terminology) background workers.
My question is, whenever the backgroundworker is invoked, the program creates another notifyicon in the taskbar. And this keeps on happening whenever the worker is invoked. Initially, when I hover over the icons, they seem to have the sameproperties as intended and "hold fort", however, after sometime (possibly 20 seconds or more), if I hover over them,they disappear.
Has anyone come accross this and / or how can I stop this behaviour?
That isn't "normal" behavior. What do your BackgroundWorkers do? Show us any code that is accessing the NotifyIcons please...surely you must be making them appear somehow. =\
ASKER
Strange as it may seem, there is NO code at all that fires the notifyicon. I have added it through the designer, and apart from handling its click event, no other code accesses / fires the notifyicon (so far!). I intend to implement a balloon tip in the future, however, as it stands, not yet.
The code for handling the clickevent is:
The code for handling the clickevent is:
Private Sub NotifyIcon1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NotifyIcon1.Click
Me.Show()
End Sub
ASKER
see image example
iconspawn.gif
iconspawn.gif
Are you sure these icons are not from previous instances that didn't shut down properly?
So when you first run the app, there is only one icon? ...and you are getting more icons while the app is still running?
Are you creating other instances of the main form via code?
So when you first run the app, there is only one icon? ...and you are getting more icons while the app is still running?
Are you creating other instances of the main form via code?
ASKER
1. I am sure that the icons are NOT from previous instances.
2. Before I run the app, there are not icons. I can literally see the icons being "born" when the backgroundworker is fired.
3. There are NO instances of the form being created via code.
I have to say that the backgroundworker does update the form via the progress changed where it MAY change a few images on the main form (but NEVER addresses the notifyicon).
2. Before I run the app, there are not icons. I can literally see the icons being "born" when the backgroundworker is fired.
3. There are NO instances of the form being created via code.
I have to say that the backgroundworker does update the form via the progress changed where it MAY change a few images on the main form (but NEVER addresses the notifyicon).
Ok...we've eliminated the obvious culprits then.
Nothing left to do but examine your code. Can we see a what happens in your ProgressChanged() event?
Are you doing any manual invoking directly from the background threads?
Nothing left to do but examine your code. Can we see a what happens in your ProgressChanged() event?
Are you doing any manual invoking directly from the background threads?
ASKER
Here is a typical one. I actually have around 3 other BGWs, but essentially they update the main form in the same vein.
Private Sub CheckWorker_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles CheckWorker.ProgressChanged
Dim xState As CheckIfNationwide.CheckNWState = DirectCast(e.UserState, CheckIfNationwide.CheckNWState)
Select Case xState.iResult
Case "OK"
For x = 0 To Me.DataGridView1.RowCount - 1
If Me.DataGridView1.Item(1, x).Value = xState.aResult(0).ToString.Split("\").Last Then
Dim iCell = DirectCast(Me.DataGridView1.Item(0, x), DataGridViewImageCell)
iCell.Value = My.Resources.NOFXConverter16
Me.DataGridView1.Item(3, x).Value = "Updating. Please wait ..."
End If
Next
Case "ER"
For x = 0 To Me.DataGridView1.RowCount - 1
If Me.DataGridView1.Item(1, x).Value = xState.aResult(0).ToString.Split("\").Last Then
Dim iCell = DirectCast(Me.DataGridView1.Item(0, x), DataGridViewImageCell)
iCell.Value = My.Resources.NOFXConverter16X
Me.DataGridView1.Item(3, x).Value = "Not a Natiowide file."
End If
Next
End Select
End Sub
ASKER
To add to that, I do have one instance (in one of the BGWs) where I call (invoke??) another class.
Nothing throws up red flags in my mind there...
What are you manually invoking?
What is the startup object for your application?
What are you manually invoking?
What is the startup object for your application?
ASKER
The class I invoke / call from the BGW writes a file to disk. Basically, thats all it does. I do pass to it, though, a list of string which I initialize from within the class with the "embeded" BGW (if that makes any sense). Apart from that, I can not see anything else.
ASKER
I lie, its a list of objects which includes strings and a datatable, all initialized from within the class with the "embeded" BGW.
Like you, I still can't see where the root of the problem lies.
What is the startup object for the app? I assume it's a form? Is it the same form that has the BackgroundWorkers?
Really trying to get the big picture for the flow of your app.
What is the startup object for the app? I assume it's a form? Is it the same form that has the BackgroundWorkers?
Really trying to get the big picture for the flow of your app.
ASKER
Yep, its a windows form and I have added all the BGWs through the designer.
Can you post all the code?
...or zip it up and change the extension to .txt so you can upload it here.
...or zip it up and change the extension to .txt so you can upload it here.
ASKER
Hmm! not sure I want to post the entire project here.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I haveresolved this issue, butcan not trackback wherewe were. I am also un-able to post a replication of the problem, thus the partial acceptance.
ASKER