Я работаю над приложением 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#
Место общения программистов C#
1739288238
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;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79430524/unable-to-update-the-period-of-a-system-threading-timer-instance-using-the-ch[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия