我有一个Winforms程序,下面是构造函数,它创建一个计时器来限制昂贵的异步调用。
public partial class Form1: Form
{
public Form1()
{
_timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(1) };
_timer.Tick += (s, e) =>
{
_flag = false;
_timer.Stop();
try
{
Task.Run(async () => await Presenter.Search()); // Call async DB calls
}
catch (Exception ex) // Cannot capture the Exception of `Presenter.Search()`
{
MessageLabel.Text = "Error:....";
}
};
}
private readonly DispatcherTimer _timer;
private bool _flag;
然后点击事件触发异步调用
public void OnCheckedChanged(object sender, EventArgs e)
{
if (!_flag)
{
_flag = true;
_timer.Start();
}
}
如何捕获Presenter.Search()
的异常并以表格形式显示错误?
如果我进行更改,它将阻止UI线程
Task.Run(async () => await Presenter.Search());
到
Presenter.Search().RunSynchronously()
?
答案 0 :(得分:4)
要处理android:elevation="5dp"
形式的异常,只需对Presenter.Search
事件使用异步事件处理程序。
Tick