Я подключаюсь к устройству, используя команду пут над URL.Однако для установки требуется, чтобы асинхронная команда находилась внутри таймера.Некоторое время он работает нормально, затем mscorlib.dll начинает выдавать исключения, и команды перестают отправляться.
Я попытался добавить асинхронный вызов в обработчик событий таймера и дождаться функции, которая вызывает команду, но это все равно происходит,Не уверен на 100%, как это должно быть, потому что таймер не может ждать, и это происходит очень быстро.
button click {
_updateTimer = new Timer(_updateInterval);
_updateTimer.Tick += new EventHandler(TimerUpdate_Tick);
Start
}
private async void TimerUpdate_Tick(object sender, System.EventArgs e)
{
//do other very important stuff that has to be in timer update event
await myfunction();
}
public static async Task myfunction()
{
HttpClientHandler handler = new HttpClientHandler();
using (var httpClient = new HttpClient(handler))
{
using (var request = new HttpRequestMessage(new HttpMethod("PUT"), address))
{
request.Content = new StringContent("hello");
var response = await httpClient.SendAsync(request);
//after some time, it gives an exception on this SendAsync saying connection closed. I did try reconnecting but still gives it again.
}
}
}
Я хочу очистить некоторый буфер, если это проблема, и сохранить соединение живым и запросы отправляются.как они делают в течение первых 15 секунд.Я не уверен, что асинхронность, ожидания и задачи используются правильно.
Спасибо