У меня есть следующий код, который я вызываю при загрузке страницы:
public StartPage()
{
NavigationPage.SetHasNavigationBar(this, false);
InitializeComponent();
Task.Run(() =>
{
Scan_Function();
});
}
В Scan_Function()
у меня есть секундомер и несколько операторов if, которые должны сделатьтекст метки bleText
изменяется динамически:
public void Scan_Function()
{
Stopwatch sw = new Stopwatch();
sw.Start();
while (sw.Elapsed.TotalMilliseconds <= 10000)
{
if (sw.Elapsed.TotalMilliseconds >= 1000 && sw.Elapsed.TotalMilliseconds <= 1050)
{
bleText.Text = "Scanning.";
}
else if (sw.Elapsed.TotalMilliseconds >= 2000 && sw.Elapsed.TotalMilliseconds <= 2050)
{
bleText.Text = "Scanning..";
}
....... continues
}
sw.Stop();
bleText.Text = "Couldn't connect";
bleText.TextColor = Color.Red;
}
Я вызываю функцию Scan_Function () из Task.Run()
, потому что я хочу, чтобы метод выполнялся асинхронно со всем остальным, чтобы пользователь все еще мог нажимать кнопкии т.д.
Моя проблема в том, что ничего не происходит!Я подозреваю, что с bleText.Text
что-то не так, потому что мой отладчик доходит до него и, кажется, застревает, ничего не обновляя и не выпрыгивая из цикла.Если я комментирую свои операторы if, он проходит через цикл, но застревает, когда достигает bleText.Text
вне цикла.
Что я здесь не так делаю?