Невозможно обновить период экземпляра `system.threading.timer` с использованием метода` reame`C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно обновить период экземпляра `system.threading.timer` с использованием метода` reame`

Сообщение Anonymous »

Я работаю над приложением WPF, используя инструментарий MVVM, который позволяет пользователям устанавливать период передачи циклических данных с FTP -сервера. Я использую таймер с начальным периодом 30S для выполнения метода обратного вызова Async , который загружает файлы с сервера. Я пытаюсь обновить период таймера через RelayCommand в модели представления страницы. Для этого я использую метод изменения (Timespan, Timespan) . Тем не менее, период никогда не обновляется, несмотря на изменение метод, возвращающий true .
Внутри класса с именем station , я инициализирую таймер и AutoreseTevent
private Timer _timer = new Timer(RetrieveDataset, _timerAutoResetEvent, TimeSpan.FromMilliseconds(30000), TimeSpan.FromMilliseconds(30000));
private AutoResetEvent _timerAutoResetEvent = new AutoResetEvent(false);
< /code>
public async void RetrieveDataset(object? state)
{
AutoResetEvent autoEvent = (AutoResetEvent)state;
await RetrieveDataset();
autoEvent.Set();
}

public async Task RetrieveDataset()
{
bool success = true;
List deleteFilePaths = [];
try
{
List resultList = await FTPCustomClass.DownloadDirectoryAsync(_remoteFilesPath, _localFilesPath, _ipAddress);
foreach (FtpResult result in resultList)
{
if (result.IsFailed)
{
success = false; continue;
}
// Add the file path if the download was successful
else if (result.Type == FtpObjectType.File)
{
deleteFilePaths.Add(result.RemotePath);
}
}
}
catch (Exception)
{
success = false;
}
// Delete successful downloads
await FTPCustomClass.DeleteFileAsync(deleteFilePaths, _ipAddress);

return success;
}

< /code>
I am trying to update the period using a RelayCommand, который вызывает следующий метод
public void UpdateTimerPeriod(TimeSpan timerPeriod)
{
_station.SetTimerPeriod(timerPeriod);
}
< /code>
And the SetTimerPeriod из поля _station определяется как
public bool SetTimerPeriod(TimeSpan newPeriod)
{
_timerAutoResetEvent.WaitOne(5000, false);
bool success = _timer.Change(TimeSpan.Zero, newPeriod);
return success;
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... ing-the-ch
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Невозможно найти версию System.Threading.Tasks.Dataflow, совместимую с Dse 2.10.4 System.Threading.Tasks.Dataflow' (>= 4
    Anonymous » » в форуме C#
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Невозможно найти версию System.Threading.Tasks.Dataflow, совместимую с Dse 2.10.4 System.Threading.Tasks.Dataflow' (>= 4
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Невозможно найти версию System.Threading.Tasks.Dataflow, совместимую с Dse 2.10.4 System.Threading.Tasks.Dataflow' (>= 4
    Anonymous » » в форуме C#
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Надежно остановить System.Threading.Timer?
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Надежно остановить System.Threading.Timer?
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»