阅读背景:

BeginInvoke - 当try块中的方法抛出时,为什么此代码中的catch块没有捕获到InvalidOperationException异常?

来源:互联网 
private void f()
{
    Action<string> action = WriteLogToFile;
    AsyncCallback callBack = LogCallBack;

    action.BeginInvoke("Hello world!", callBack, action);
}

private void WriteLogToFile(string message)
{
    Monitor.Enter(locker);

    string formattedLog = Write(message);

    try
    {
        SendEmailNotifications(formattedLog);
    }
    catch (InvalidOperationException)
    {
    ...
    }

    Monitor.Exit(locker);
}

private static void LogCallBack(IAsyncResult r)
{
    if (r.IsCompleted)
    {
        ((Action<String>) r.AsyncState).EndInvoke(r);
    }
}
private void f()
{
    Action<string> action = 



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: