У меня есть такой метод, который читает сообщение из Redis и запускает задачу после получения сообщения от Redis.
private Task _messageSentTask;
private void SubscribeOnMessage()
{
_messageSentTask = new Task<bool>(() => true);
var sub = _redisConnection.GetSubscriber();
sub.Subscribe(_redisChannel, (channel, msg) =>
{
_receivedMessage = JsonConvert.DeserializeObject<MyMessage>(msg);
_messageSentTask.Start();
});
}
При первом запуске этого метода все в порядке, но у меня проблема с _messageSentTask.Start();
при запуске во второй раз и так далее:
System.InvalidOperationException: 'Start may not be called on a task that has completed.'
Я делаю _messageSentTask = new Task<bool>(() => true)
перед подпиской и запуском Задачи:
sub.Subscribe(_redisChannel, (channel, msg) =>
{
_receivedMessage = JsonConvert.DeserializeObject<MyMessage>(msg);
_messageSentTask.Start();
});
почему _messageSentTask
не указывает на новую Задачу, а остается старой завершенной?