Я создаю простое настольное приложение с использованием Gtk #. Когда пользователь нажимает кнопку, я хочу показать «индикатор загрузки» MessageDialog и выполнить некоторую обработку в фоновом режиме, когда процесс завершится, закройте диалоговое окно и обновите некоторые элементы управления из пользовательского интерфейса. .
Я новичок в Gtk# и Mono, поэтому мой код выглядит так:
protected void OnBtnClicked(object sender, EventArgs e)
{
try
{
Task.Factory.StartNew(() =>
{
var dlg = new MessageDialog(this, DialogFlags.Modal, MessageType.Info, ButtonsType.None, "Processing...");
dlg.Run();
//Some sync calls to remote services
//...
//The process finished so close the Dialog
dlg.Destroy();
//Here: Update the UI with remote service's response
//txtResult.Buffer.Text = result.Message;
});
}
catch (Exception ex)
{
var dlg = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Close, ex.Message);
dlg.Title = "Error";
dlg.Run();
dlg.Destroy();
}
}
Этот код показывает MessageDialog, но он никогда не закрывается.
Моно версия: 4.4.2
IDE: Xamarin Studio Community Edition 6.0.2
Gtk# версия: 2.12.38