如何在构造函数中捕获异步方法的异常?

时间:2018-11-16 19:56:06

标签: c# winforms

我有一个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()

1 个答案:

答案 0 :(得分:4)

要处理android:elevation="5dp" 形式的异常,只需对Presenter.Search事件使用异步事件处理程序。

Tick
相关问题