Я создаю и запускаю поток внутри обработчика события, нажатого кнопкой.Этот поток выполняет некоторую синхронную работу и уведомляет поток пользовательского интерфейса о прогрессе, вызывая событие.
Проблема заключается в том, что он блокирует поток пользовательского интерфейса, и я не уверен, почему.
public partial class MainPage : ContentPage
{
private event EventHandler<double> ProgressChanged;
public MainPage()
{
InitializeComponent();
button.Clicked += Button_Clicked;
ProgressChanged += MainPage_ProgressChanged;
}
private void Button_Clicked(object sender, EventArgs e)
{
new Thread(() =>
{
for (double i = 0; i <= 1; i += .00001)
{
ProgressChanged.Invoke(this, i);
}
}).Start();
}
private void MainPage_ProgressChanged(object sender, double e)
{
Device.BeginInvokeOnMainThread(() =>
{
progressBar.Progress = e;
});
}
}