при вызове StartCountDowan происходит динамическое уменьшение счетчика,
при вызове ListFiles - изменения счетчика не происходит, подскажите, как решить эту проблему?
@page "/"
@using System
@using System.Net
@using System.IO
@using System.Globalization
@using System.Diagnostics
@using System.Threading
<h1>@count</h1>
<button @onclick="@StartCountDown">Start Countdown</button>
<button @onclick='@(() => ListFiles("ftp://ftpurl/"))'>Read</button>
@code {
private int count { get; set; } = 10;
protected override void OnInitialized()
{
}
private async Task StartCountDown()
{
var timer = new Timer(new TimerCallback(_ =>
{
if (count <= 0) return;
count--;
InvokeAsync(() =>
{
StateHasChanged();
});
}), null, 1000, 1000);
}
private async Task ListFiles(string ftpPath)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpPath);
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
request.Credentials = new NetworkCredential("Anonymous", "user@mail");
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
using (Stream responseStream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(responseStream))
{
string line = reader.ReadLine();
while (!string.IsNullOrEmpty(line))
{
...
await InvokeAsync(() =>
{
count++;
StateHasChanged();
});
Debug.WriteLine (line); // вывод работаем корректно
...
line = reader.ReadLine();
}
}
}
}