У меня есть асинхронная функция, работающая в фоновом режиме. Эта функция проверяет данные через TCP. У меня есть другая функция GetClientNameById
, которая получит текущее значение и вернется в формате json
. Тем не менее, я получаю NULL для всех значений. Как я могу прерывать посередине, получать значения и возобновлять опрос? Ниже мой код.Асинхронный с прерываниями
class Poll
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
public string D { get; set; }
public string E { get; set; }
}
public async void Polling(CancellationToken token)
{
await Task.Run(() =>
{
if (token.IsCancellationRequested)
{
return;
}
while (true)
{
if (token.IsCancellationRequested)
{
return;
}
//TODO
poll.A = reply1;
poll.B = reply2;
poll.C = reply3;
poll.D = reply4;
poll.E = DateTime.Now.ToString("HH:mm:ss.fff");
}
});
}
Poll poll = new Poll();
public string GetClientNameById(string Id)
{
string json = "";
if (Id == "Poll")
{
Console.WriteLine("Reply: " + poll.A + " " + poll.B + " " + poll.C + " " + poll.D + " " + poll.E);
json = JsonConvert.SerializeObject(poll, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, Formatting = Formatting.Indented });
}
return json;
}
Где находится переменная 'poll' и объявлена? –
И вы подтвердили, что один и тот же экземпляр совместно используется функцией 'Polling' и' GetClientNameById'? Вы также подтвердили при отладке, что ваш код достигает места в «Опросе», в котором вы устанавливаете 4 свойства? И как только этот код будет достигнут и будет выполнен, вы подтвердили, что внутри 'GetClientNameById' эти 4 свойства имеют значение null? –
@DarinDimitrov sry. моя вина. Я неправильно понял ваш вопрос. 'poll' объявлен выше' GetClientNameById' – active92