AddOnPreRenderCompleteAsync Обработка исключений - PullRequest
0 голосов
/ 08 декабря 2011

Как отобразить сообщение об ошибке на странице, которая была возвращена из BeginAsyncOperation?Страница загружается изящно без данных, но пользователь не знает, почему?Я проверил, что ошибка была выдана, но не обработана в BeginAsyncOperation.

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        AddOnPreRenderCompleteAsync(
            new BeginEventHandler(BeginAsyncOperation),
            new EndEventHandler(EndAsyncOperation)
        );
    }
}

private IAsyncResult BeginAsyncOperation(object sender, EventArgs e, AsyncCallback callback, object state)
{
    var t = new ThreadStart(GetData);
    try
    {
        return t.BeginInvoke(callback, null);
    }
    catch (Exception ex)
    {
        this.lblError.Text = ex.Message; 
        this.pnlError.Visible = true;
    }
    return null;
}

private void EndAsyncOperation(IAsyncResult result)
{
    BindData();
    SetControlStates();
}

private void GetData()
{
    try
    {
        throw new Exception("something broke!");
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

1 Ответ

0 голосов
/ 16 декабря 2011

Я обдумывал это.

private IAsyncResult BeginAsyncOperation(object sender, EventArgs e, AsyncCallback callback, object state)
{
    var t = new ThreadStart(GetData);
    return t.BeginInvoke(callback, null);
}

private void GetData()
{
    try
    {
        throw new Exception("something broke!");
    }
    catch (Exception ex)
    {
        this.lblError.Text = ex.Message; 
        this.pnlError.Visible = true;
    }
}
...