在我的 winform 程序中,我在每个控制事件上使用 Postsharp 拦截器类来避免 try/catch 块重复。
自定义 postsharp 方法:
[Serializable]
public class OnErrorShowMessageBox : MethodInterceptionAspect
{
public override void OnInvoke(MethodInterceptionArgs args)
{
try
{
args.Proceed();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
args.ReturnValue = null;
}
}
}
使用这个属性:
[OnErrorShowMessageBox]
private void txtComments_TextChanged(object sender, EventArgs e)
{
//blabla
}
这就像一个魅力但知道我想在事件中使用异步。所以 txtComments_textChanged 变成:
[OnErrorShowMessageBox]
private async void txtComments_TextChanged(object sender, EventArgs e)
{
await //blabla
}
问题来了。当异步时,拦截器方法中的 Try/catch bloc 不会捕获任何内容...我该怎么办?谢谢