Я пытаюсь автоматически войти в систему на странице spash перед запуском приложения, однако приведенный ниже код не работает. Я ставлю точки останова, и кажется, что loginDone никогда не вызывается. Очень похожий код отлично работает при запуске с кнопки. Есть ли что-то особенное в методе Application_Launching, который означает, что он не может загружать строки? Возможно, не все было инициализировано, поэтому оно не будет работать, но тогда я ожидал бы, что это приведет к ошибке.
private void Application_Launching(object sender, LaunchingEventArgs e)
{
done = false;
IsolatedStorageSettings appSettings = IsolatedStorageSettings.ApplicationSettings;
appSettings.Remove("sid");
if (appSettings.Contains("username") && appSettings.Contains("password")) {
WebClient wc = new WebClient();
wc.DownloadStringCompleted += loginDone;
wc.DownloadStringAsync(InkBunnyUrls.Login(appSettings["username"].ToString(), appSettings["password"].ToString()));
for (int i = 0; (i < 60 && !done); i++) {
Thread.Sleep(TimeSpan.FromSeconds(1));
}
}
}
private void loginDone(object sender, DownloadStringCompletedEventArgs e)
{
IsolatedStorageSettings appSettings = IsolatedStorageSettings.ApplicationSettings;
XDocument loginxml = XDocument.Parse(e.Result);
var sid = (loginxml.Descendants("response").Elements("sid")).FirstOrDefault();
if (sid == null || sid.Value.Length < 1) {
appSettings.Add("sid", sid.Value);
}
done = true;
}