Podpowiedzcie co trzeba zrobić, żeby zapisało i do pliku ten request:
static void Main(string[] args)
{
//To mi zapisuje
File.AppendAllText(@"c:\TEMP\file.txt", "Rozpoczynam odczyt");
Task.Run(new Action(GetEncoderCouter));
}
static HttpClient _client = new HttpClient();
static async void GetEncoderCouter()
{
var result = await _client.GetAsync("http://10.0.3.225:8010/");
string res = await result.Content.ReadAsStringAsync();
if (result.IsSuccessStatusCode)
{
encoderClass enc = new encoderClass();
enc = JsonConvert.DeserializeObject<encoderClass>(res);
//Tego nie zapisuje
File.AppendAllText(@"c:\TEMP\file.txt", $"{DateTime.Now:f} {enc.counter}{Environment.NewLine}");
}
}
A może po prostu nie stosować metody asynchronicznej ?
private static void Pobierz()
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://10.0.3.225:8010/");
request.Method = "GET";
HttpWebResponse webresponse;
webresponse = (HttpWebResponse)request.GetResponse();
Encoding encoding = System.Text.Encoding.GetEncoding(1250);
StreamReader loResponseStream = new StreamReader(webresponse.GetResponseStream(), encoding);
string Response = loResponseStream.ReadToEnd();
loResponseStream.Close();
webresponse.Close();
encoderClass e = new encoderClass();
e = JsonConvert.DeserializeObject<encoderClass>(Response);
Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH-mm-ss}: {e.counter}{Environment.NewLine}");
File.AppendAllText(@"c:\TEMP\file.txt", $"{DateTime.Now:yyyy-MM-dd HH-mm-ss}: {e.counter}{Environment.NewLine}");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
}
}
async main
zablokuje jeden wątek, a ona w pętli pozostałe. Przy await zamiast.Result
według mnie zablokowany będzie tylko jeden wątek. Czy jednak źle myślę? ;)