Я хочу опросить один датчик, который возвращает ответ JSON Rest Api. Я вызываю API каждые 40 миллисекунд, но это выдает мне эту ошибку:
в System.Threading.Tasks.Task1.GetResultCore (логическое ожиданиеCompletionNotification) в System.Threading.Tasks.Task1.get_Result()
У меня есть таймер, где interval
= 40. И это код, как я вызываю Api:
private void Timer(object sender, EventArgs e)
{
tmrPollingSick.Stop();
string strJson = "";
HttpClient client = new HttpClient();
string baseUrl = "http://9999.99999.99999.8";
client.BaseAddress = new Uri(baseUrl);
var contentType = new MediaTypeWithQualityHeaderValue("application/json");
client.DefaultRequestHeaders.Accept.Add(contentType);
string strAltezza = string.Empty;
try
{
strJson = "Here I set HEADERS... DATA ect " + Convert.ToChar(34) +
"header" + Convert.ToChar(34) + ": {............"
var contentData = new StringContent(strJson, System.Text.Encoding.UTF8, "application/json");
using (var responseMessage = client.PostAsync("/bla/bla/bla", contentData).Result)
{
if (responseMessage.IsSuccessStatusCode)
{
string strContext = responseMessage.Content.ReadAsStringAsync().Result;
Object dec = JsonConvert.DeserializeObject(strContext); // deserializing Json string (it will deserialize Json string)
JObject obj = JObject.Parse(strContext);
//Process Data In
JObject obj1 = JObject.Parse(obj["bla"].ToString());
JObject obj2 = JObject.Parse(obj1["processDataIn"].ToString());
strAltezza = obj2["1"].ToString();
textBox1.Text = strAltezza;
}
}
}
catch(WebException ex1)
{
MessageBox.Show("web: "+ex1.StackTrace.ToString() + " - " + ex1.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace.ToString() + " - " + ex.Message);
}
tmrPollingSick.Start();
}
Все работает нормально, но через некоторое время выдает эту ошибку. Я уже прочитал это (Как реализовать данные в реальном времени для веб-страница и это), но я их еще не пробовал. Любые предложения, как это исправить? Есть ли другой способ, как получить результат в реальном времени без сбоев?
.Result
определенно неправильно, но сейчас невозможно догадаться, что на самом деле не так. Вы достигли предела регулирования сервера? Создание нового HttpClient вместо повторного использования одного и того же экземпляра привело к исчерпанию сокетов? Какая-то другая проблема? - person Panagiotis Kanavos   schedule 01.10.2020JsonConvert
, так иJObject.Parse
, таким образом дважды анализируя один и тот же ответ. - person Panagiotis Kanavos   schedule 01.10.2020