Archief - [PROG]C# events probleem

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Ingis

Legacy Member
Code:
void m_iotag_Updated(object sender, UpdateEventArgs e)
        {
                        
            if (sender == m_iotag)
            {
               
                foreach (visualisatie vs in visualisaties)
                {

                    if (vs.Soort == 1)
                    {
                        tijd.Clear();
                        waarde.Clear();
                        for (int i = 0; i < 5; i++)
                        {
                            tijd.Add("");
                            waarde.Add(0);
                        }
                    }
                    foreach (koppeling klp in koppelingen)
                    {
                        if (klp._nrVis == visualisaties.IndexOf(vs))
                        {
                            if (vs.Soort == 1)
                            {
                                tijd[klp._nrItem] = klp._tag.TimeStamp + "";
                                waarde[klp._nrItem] = (Double)klp._tag.Value;
                            }
                        }
                    }
                    if (vs.Soort == 1)
                    {
                        vs.opschuif(tijd, waarde);
                    }
                    vs.Invalidate();

                }

            }
        }

Ik heb probleem dat bij elke update dat deze code moet worden uitgevoerd moet worden deze wel perfect start, maar niet tot einde wilt lopen. bij "waarde[klp._nrItem] = (Double)klp._tag.Value;" springt hij eruit en begint gewoon opnieuw aan de code ... :sad: Dus ik raak nooit aan mijne invalidate ... :help: :help:

alle tips welkom
ingis

Ingis

Legacy Member
// tijd[klp._nrItem] = klp._tag.TimeStamp + "";
// waarde[klp._nrItem] = (Double)klp._tag.Value;

als ik deze in commentaar zet gaat het dus wel ...

De tags waar hier mee gewerkt worden zijn opc-servertags. In die if geef ik de waarden mee aan variabelen. Loopt dit nu niet omdat ik de waardes van de tags uitlees ? En is dit de reden wrm hij de rest niet doet ??

jodeman

Legacy Member
Normaal gezien kan dat niet en moet die daar gewoon wel passeren.
Heb je de debugger gebruikt?

Ingis

Legacy Member
ja ... hij slaat code gewoon over in de debugger (zo ben ik er achter gekomen dat hij die code niet uitvoerde).


Code:
foreach (visualisatie vs in visualisaties)
                {
                    if (vs.Soort == 1)
                    {
                        tijd.Clear();
                        waarde.Clear();
                        for (int i = 0; i < 5; i++)
                        {
                            tijd.Add("");
                            waarde.Add(0);
                        }

                        foreach (koppeling klp in koppelingen)
                        {
                            if (klp._nrVis == visualisaties.IndexOf(vs))
                            {
                                //als deze lijnen in commentaar staan werkt het wel :)
                                // anders als deze niet in commentaar staan vlieg programma hier uit de lus en 
                                //begint gewoonweg openieuw met void m_iotag_updated ... ? 
                                // snap er niks van ??? 
                                tijd[klp._nrItem] = klp._tag.TimeStamp + "";
                                waarde[klp._nrItem] = (Double)klp._tag.Value;                                
                            }
                        }
                        vs.opschuif(tijd, waarde);                       
                        vs.Invalidate();
                    }
                }


code iets anders gezet .. maar blijft zelfde probleem .. :(

jodeman

Legacy Member
Probeer ook eens met één lijn te commentariëren en de andere niet en omgekeerd. Dan weet je welk commando er misloopt.
Je moet ook step into doen, dan kun je zien waar het echt misloopt.

Ingis

Legacy Member
doe ik ... maakt niet uit welke lijn van de 2 ... 1 van de 2 is genoeg ..

en met step into doe ik ook. hij gaat naar die lijn, haalt waarde op en dan springt em gewoon terug naar boven in de sub.


ik weet nu dat het exacte probleem is dat " klp._tag.TimeStamp + ""; gedeelte .. of dus het gedeelte waar ik een tag bevraag ...


Als er iemand is met een opc server en kennis ervan die mij wilt helpen met dit stukje kan ik eventueel code sturen.
Zou u eeuwig dankbaar zijn. Ben er nu al een volledige dag aan het op zoeken en ben ondertussen vrij gefrustreerd geraakt.

[AiR] LeViaTHaN

Legacy Member
blijkbaar bij het setten van een waarde
tijd[klp._nrItem] = klp._tag.TimeStamp + "";

wordt er een Update event gefired waardoor hij terug naar boven gaat in uw method die dat Update event afhandelt.

Ingis

Legacy Member
fout is gevonden na heel lang zoeken.

Was dan nog stom ook, zat een castings fout in.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan