Я работаю над приложением 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
Невозможно обновить период экземпляра `system.threading.timer` с использованием метода` reame` ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение