If to use just static function for starting Async operation also everything works.

public static void DoActionAsync(Action f)
        {
            f.BeginInvoke(x =>
            {              
                f.EndInvoke(x);
            }, null);
        }
In case of fully managed code, there is no "such" problems with extensions.