public void ChangeAuth(object dispatcher) { while (true) { if (config.idSession == null || config.AvatarAddress == null) { Thread.Sleep(500); continue; } var client = new WebClient(); client.DownloadFileTaskAsync(config.AvatarAddress, "avatar.jpg").Wait(); ((Dispatcher)dispatcher).BeginInvoke(new Action(() => { Image img = new Image(); BitmapImage src = new BitmapImage(); src.BeginInit(); src.UriSource = new Uri(Environment.CurrentDirectory + "/avatar.jpg", UriKind.Absolute); src.EndInit(); img.Source = src; img.Stretch = System.Windows.Media.Stretch.Uniform; config.AvatarImage = img; AvatarChange.Invoke(); })); break; } }
public void LoadAvatar() { var t = new Thread( delegate() { if (AvatarUrl.EndsWith(".jpg")) { var buffer = new byte[1024]; var httpRequest = (HttpWebRequest)WebRequest.Create(AvatarUrl); httpRequest.Timeout = 30000; httpRequest.Method = "GET"; httpRequest.UserAgent = "ModAPI"; httpRequest.Accept = "image/jpeg"; httpRequest.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => { return(true); }; Console.WriteLine(AvatarUrl); using (var httpResponse = (HttpWebResponse)httpRequest.GetResponse()) { using (var responseStream = httpResponse.GetResponseStream()) { var memStream = new MemoryStream(); int bytesRead; while ((bytesRead = responseStream.Read(buffer, 0, buffer.Length)) > 0) { memStream.Write(buffer, 0, bytesRead); } memStream.Seek(0, SeekOrigin.Begin); Avatar = memStream; } } } OnAvatarChange?.Invoke(); }); t.Start(); }