Потоки и возвращаемые значения - C#
Формулировка задачи:
Здравствуйте, есть функция:
Я ее вызываю таким образом
Как вернуть значения ip, country_name, city в основной поток?
Как дождаться завершения этого потока?
Заранее благодарен.
Листинг программы
- public void get_geo_information(string ip, string country_name, string city)
- {
- string api_url = "http://freegeoip.net/json/";
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(api_url);
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- Stream response_stream = response.GetResponseStream();
- StreamReader reader_stream = new StreamReader(response_stream, System.Text.Encoding.GetEncoding("utf-8"));
- string json = reader_stream.ReadToEnd();
- reader_stream.Close();
- var j = JObject.Parse(json);
- ip = (string)j["ip"];
- country_name = (string)j["country_name"];
- city = (string)j["city"];
- }
Листинг программы
- Thread get_geo_information_thread = new Thread(() => get_geo_information(ip, country_name, city));
- get_geo_information_thread.Start();
Решение задачи: «Потоки и возвращаемые значения»
textual
Листинг программы
- class Program
- {
- static void Main(string[] args)
- {
- GeoInfo gi = GetGeoInfoAsync().Result;
- Console.WriteLine(gi);
- Console.ReadKey();
- }
- //async method
- static async Task<GeoInfo> GetGeoInfoAsync()
- {
- return await Task<GeoInfo>.Factory.StartNew(() => GetGeoInfo());
- }
- //sync method
- static GeoInfo GetGeoInfo()
- {
- string api_url = "http://freegeoip.net/json/";
- string jsonAns;
- using (WebClient wc = new WebClient())
- {
- jsonAns = wc.DownloadString(api_url);
- }
- var json = JObject.Parse(jsonAns);
- var gi = new GeoInfo
- {
- Ip = (string)json["ip"],
- Country = (string)json["country_name"],
- City = (string)json["city"]
- };
- return gi;
- }
- }
- class GeoInfo
- {
- public string Ip { get; set; }
- public string Country { get; set; }
- public string City { get; set; }
- public override string ToString()
- {
- return string.Format(@"IP = ""{0}""; Country = ""{1}""; City = ""{2}""", Ip, Country, City);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д