login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[C#] data passing (Opgelost)

Offline larssy1 - 14/11/2011 11:02 (laatste wijziging 14/11/2011 11:57)
Avatar van larssy1MySQL beginner Hey mensen,

Iemand enig idee wat ik hier fout doe??

Ik start mijn applicatie op, waarna vervolgens de data in een andere classe word gevuld.

Vervolgens word er door een andere methode de klasse data geupdate.

Nu wil ik in de hoofdklase van mijn applicatie zelf, de data weergeven, maar geeft hier de int 0 terug inplaats van het getal dat ik wil..

Main classe
http://plaatscode.be/141393/

Class Dummie
http://plaatscode.be/141391/

Class Dummie_Config
http://plaatscode.be/141392/


kortom, ik doe iets verkeerd bij het data passing, en hierbij zal de config in Main() zich eigenlijk moeten gaan refreshen..

9 antwoorden

Gesponsorde links
Offline Ontani - 14/11/2011 11:07
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
in je Main vergeet je een parameter mee te geven met startSession(), daardoor lijkt mij de config waarde niet geset te worden.
Offline larssy1 - 14/11/2011 11:11 (laatste wijziging 14/11/2011 11:57)
Avatar van larssy1 MySQL beginner Mijn fout, deze hoort niet bij StartSession, maar bij de standaard intialisatie.
-aangepast

---
nog een belangrijk detail:

sessie word opgehaalt via WebClient. mbv de volgende code:
  1. // zichbaar in source van main topic
Offline Abbas - 14/11/2011 11:41
Avatar van Abbas Gouden medaille

Crew .NET
Zou je eens je code in één stuk kunnen posten. Hiermee bedoel ik alle code van een bepaalde klasse in één codeblok. Nu toon je honderd kleine codeblokjes met onbeduidende code. Nog een tip is om duidelijke namen aan je klassen te geven, dus niet "MijnKlasse" of iets dergelijks..
Offline larssy1 - 14/11/2011 11:50 (laatste wijziging 14/11/2011 11:56)
Avatar van larssy1 MySQL beginner
titjes schreef:
Zou je eens je code in één stuk kunnen posten. Hiermee bedoel ik alle code van een bepaalde klasse in één codeblok. Nu toon je honderd kleine codeblokjes met onbeduidende code. Nog een tip is om duidelijke namen aan je klassen te geven, dus niet "MijnKlasse" of iets dergelijks..


Indien gewenst kan ik dit wel geven, maar alsnog zal ik bepaalde waardes moeten wijzigen naar dummies vanwege mogelijk bedrijfsgeheim van mijn stageplek.

Main classe
http://plaatscode.be/141393/

Class Dummie
http://plaatscode.be/141391/

Class Dummie_Config
http://plaatscode.be/141392/
Offline Abbas - 14/11/2011 12:32
Avatar van Abbas Gouden medaille

Crew .NET
Ik zou eens gaan debuggen met breakpoints om te zien wat er stap voor stap gebeurt. Zo kan je zien of overal je parameteres en variabelen correct ingevuld zijn, zoals de URL van het XML-bestand of de klasse-variabelen.
Offline larssy1 - 14/11/2011 12:52 (laatste wijziging 15/11/2011 09:37)
Avatar van larssy1 MySQL beginner Nou, dit had ik dus al gekeken..

En het gaat als volgt:

stap1
  1. public class Dummie
  2. {
  3. Dummie_Config config;
  4.  
  5. public Dummie(Dummie_Config _config)
  6. {
  7. config = _config;
  8. }
  9.  
  10. public Dummie_Config StartSession()
  11. {
  12. string url = "xmlurl";
  13.  
  14. WebClient client = new WebClient();


stap2
  1. return config;


stap3
  1. client.OpenReadCompleted += (sender, e) =>
  2. {
  3. if (e.Error != null)
  4. return;
  5.  
  6. Stream str = e.Result;
  7. XDocument xdoc = XDocument.Load(str);
  8.  
  9. string show = xdoc.ToString();
  10.  
  11. try
  12. {
  13. config.DiMSSessionId = Convert.ToInt32(xdoc.Element("SESSION_ID").Value.ToString());
  14. }
  15. catch (Exception)
  16. {
  17. MessageBox.Show("Converting SESSION_ID failed");
  18. }
  19. };
  20. client.OpenReadAsync(new Uri(url, UriKind.Absolute));


Volledige source:
http://plaatscode.be/141391

Nu is dus het probleem dat ik die return dus in het event moet returnen, maar dat accepteerd hij niet omdat het een void is.
--------
Zelfde probleem doet zich voor wanneer ik het probeer mbv:
HttpWebRequest
Stream
StreamReader
XDocument
--------
Dit gedoe komt door het gebruik van async.. helaas heeft wp7 geen sync mogelijkheid.. en moet dus gewoon om die async heen bouwen..

Maar heb geen benul van hoe..
--------
Niemand die mij kan helpen mij het creeeren van een Sync Request?
Offline Abbas - 15/11/2011 09:53
Avatar van Abbas Gouden medaille

Crew .NET
Bumpen van een topic is niet toegestaan!
Offline Maarten - 15/11/2011 11:31
Avatar van Maarten Erelid Het is overigens nutteloos om een Sync Request te proberen te bouwen, het gaat er hem eerder over om een logische Async oplossing te bedenken en het principe ervan te snappen.

Ik snap eerlijk gezegd het probleem niet.. je bedoelt dat je dus iets gaat tonen op je scherm voor het eigenlijk geladen is? Is dat niet evenzeer de omschrijving van de oplossing als van het probleem?
Offline larssy1 - 15/11/2011 13:42 (laatste wijziging 16/11/2011 08:49)
Avatar van larssy1 MySQL beginner In het engels:

Citaat:
The problem in general is not that i'm unable to retreive any information.

The problem here is that i'm unable to add the sessionId to an active class named "Dummie_Config config;"
Another problem here is, that it executes other code lines, before it was unable to retreive the session ID, which is caused by the ASynchronize which the WebClient and HTTPWebRequest uses.

Therefore I need to find a way to create a Synchronize webrequest. But as far i've searched, i've been unable to find something like this.


Ik wil dus gewoon een SessieID ophalen, dat word gegenereerd door de webserver, en word terug gestuurd in XML formaat.

Nu doordat ASync gewoon doorgaat met het uitvoeren van zijn code, en tegelijkertijd de opdracht geeft aan de komende code, dat het door kan gaan..

Het dus al de nieuwe code initialiseert terwijl hij nog geen actieve SessieID heeft.
En dus heb ik verouderde Data, Ik probeer het nu op te lossen met een ManualResetEvent, maar ook dit is zonder succes.

Nu blijft hij oneindig doorladen terwijl hij al met een max een seconde iets terug hoort te hebben.

nieuwe source:
http://plaatscode.be/141397/
--------------------------
Gebruik maken van ManualResetEvent en Threading resulteerd in het constant laden.

Iemand suggesties?
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.202s