
Ergebnis 1 bis 2 von 2
-
Mich gibt's schon länger
- 12.09.2012, 10:07
- #1
hallo,
habe bei meiner silverlight app ein kleines problem bei der benutzung von AutoResetEvents :/
ich poste erstmal den code:
Login.xaml.cs
Code:private void loginBtn_Click(object sender, RoutedEventArgs e) { if (userBox.Text.Length == 0 || pswBox.Password.Length == 0) MessageBox.Show(LoginStringRes.emptyLoginMsgBoxMessage, LoginStringRes.emptyLoginMsgBoxTitle, MessageBoxButton.OK); else { string result = Controller.GetController().TryToLogin(userBox.Text, MD5Core.GetHashString(pswBox.Password).ToLower()); } }
Code:public string TryToLogin(string username, string psw) { string result = ""; AutoResetEvent are = new AutoResetEvent(false); network.LoggedIn += new Network.LoginEventHandler(delegate(object sender, LoginEventArgs e) { if (e.isSuccessful) result = "success"; else result = e.errorMsg; are.Set(); }); network.Login(username, psw); are.WaitOne(); return result; }
Code:public delegate void LoginEventHandler(object sender, LoginEventArgs e); public event LoginEventHandler LoggedIn; protected virtual void OnLoggedIn(LoginEventArgs e) { LoginEventHandler eventCopy = LoggedIn; if (eventCopy != null) { eventCopy(this, e); } } public void Login(string username, string psw) { string data = ""; string extension = String.Format("?login&username={0}&user_psw={1}", username, psw); HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(new Uri(UrlStringRes.api + extension)); req.BeginGetResponse(delegate(IAsyncResult ar) { data = IAsyncResultToString(ar); if (data != "err") { XDocument doc = XDocument.Parse(data); if (doc.Element("user").Element("error") == null) { string userId = (string)doc.Element("user").Element("id"); string userName = (string)doc.Element("user").Element("username"); string userEmail = (string)doc.Element("user").Element("mail"); string portal = (string)doc.Element("user").Element("portal"); string userStatus = (string)doc.Element("user").Element("status"); string active = (string)doc.Element("user").Element("isActive"); Controller.GetController().SetUser(userId, userName, userEmail, userStatus, portal, active); string temp = Controller.GetController().GetUserData("username"); OnLoggedIn(new LoginEventArgs(true, null)); } else OnLoggedIn(new LoginEventArgs(false, ErrorStringRes.userPswNotMatched)); } else OnLoggedIn(new LoginEventArgs(false, ErrorStringRes.noConnection)); }, req); }
das problem ist nun das er völlig blockiert trotz are.Set() :/ das event wird leider nie geworfen ...
ich habe per breakpoints geguckt wo er überall reingeht und wo nicht ... er geht zwar in die Login methode der Network klasse rein aber erreicht nicht den delegaten bei der BeginGetResponse Methode.
Hat jemand ne ahnung/idee oder einen anderen lösungsvorschlag?
-
entwickelt Apps
- 12.09.2012, 15:16
- #2
Warum zum Teufel benutzt du überhaupt ein AutoResetEvent? In Silverlight gibt es extra keine synchronen Methoden dafür, damit nichts blockt, und du versuchst mit dem AutoReset-"Trick" über Umwege deine Anwendung doch zum blockieren zu bringen.
Dann benutzt du eine IAsyncResultToString, die du nicht zeigst. Diese kann aber rein logisch auch nicht funktionieren, da sie keine Referenz auf den HttpWebRequest 'req' hat. Verwende stattdessen req.EndGetResponse(ar)
Ähnliche Themen
-
WJ7 Problem und XAP Problem
Von Putinas123 im Forum HTC 7 MozartAntworten: 4Letzter Beitrag: 23.12.2011, 20:22 -
[Problem] ES-Datei Explorer - Problem mit W-Lan Verbindung / DropBox Iconia A500
Von boggo im Forum Android AppsAntworten: 0Letzter Beitrag: 09.07.2011, 15:34 -
facebook und browser problem -> cookie oder javacript problem?
Von blacktnt im Forum HTC HD MiniAntworten: 0Letzter Beitrag: 05.10.2010, 17:30 -
Problem mit Mediaplayer (..hat ein problem festgestellt und muss beendet werden)
Von Daniel_23 im Forum HTC Touch DiamondAntworten: 3Letzter Beitrag: 29.07.2009, 13:30 -
GMX Server Problem = HTC Client Problem
Von Marco1981 im Forum Touch HD CommunicationAntworten: 5Letzter Beitrag: 20.03.2009, 13:59
Pixel 10 Serie mit Problemen:...