Ik heb een applicatie waar een thread wat netwerkspul afhandelt. Nu wil ik vanuit die thread events sturen naar mijn gui. Daarvoor gebruik ik de volgende code:
Echter, als ik de event fire, dan komt 'ie nooit bij de gui aan.
Als ik gewoon ev() aanroep, dan komt de event wel aan, maar in de verkeerde thread. Mijn guithread functioneert verder normaal.
Wie weet wat ik fout doe?
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| delegate void NetworkEvent(); private void FireThreadSafeEvent(NetworkEvent ev) { if (ev == null) return; if (ev.Target is Control) // moet eigenlijk ISynchronizeInvoke zijn { Control tgt = (Control)(ev.Target); tgt.Invoke(onData); } else { ev(); } } |
Echter, als ik de event fire, dan komt 'ie nooit bij de gui aan.
Als ik gewoon ev() aanroep, dan komt de event wel aan, maar in de verkeerde thread. Mijn guithread functioneert verder normaal.
Wie weet wat ik fout doe?
Localhost, sweet localhost