0
我正在使用Gtk#創建簡單的桌面應用程序,當用戶單擊按鈕時我想顯示「加載指示器」MessageDialog並使一些在後臺處理時,當進程完成時關閉對話框並從UI更新一些控件。如何在執行後臺進程時顯示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的社區版6.0.2
Gtk#的版本:38年2月12日