Hej! Haha, korkad är vad jag är =)C#: Event fires twice / Event triggas två gånger
Jag har ett skumt problem som jag aldrig sett förr. I korthet handlar det om att ett event (som jag själv definierat) körs två gånger istället för en gång.
När jag får in ett paket (data) tas det in i MessageHandler, som tolkar vad det är och om det är en viss typ av paket ska den trigga ett event, såhär:
<code>
// Delegaterna och events
public delegate void VoteReceivedDelegate(QuestionAnswer q);
public event VoteReceivedDelegate VoteReceivedEvent;
...
if (VoteReceivedEvent != null)
{
VoteReceivedEvent(questionAnswer);
}
</code>
I en annan klass, lyssnar jag på detta eventet (VoteReceivedEvent) enligt följande:
<code>
// SRef har en statisk referens till MessageHandler
SRef.messageHandler.VoteReceivedEvent += new MessageHandler.VoteReceivedDelegate(messageHandler_VoteReceivedEvent);
...
void messageHandler_VoteReceivedEvent(QuestionAnswer q)
{
VoteReceived(q.alternativeId);
}
public void VoteReceived(int alternativeId)
{
// kod
}
</code>
Det enda jag kan se är att
void messageHandler_VoteReceivedEvent(QuestionAnswer q)
körs två gånger.
I MessageHandler breakar jag och ser där att själva "triggningen" av eventet körs endast 1 gång.
Jag fattar inte alls vad som pågår. Några idéer?Sv: C#: Event fires twice / Event triggas två gånger
Jag kom på vad det var:
Formuläret som lyssnar på eventet, Form1, skapas i flera instanser från början. Det var en förändring jag gjorde precis nyligen och innebär att alla instanser av Form1 triggas, vilket jag inte vill ska hända.
Så det var bara jag som klantade mig =)