Await and async in C#

MainWindow.xaml

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="156.618" Width="310.294">
    <Grid>
        <Button Content="Click Here" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="272" Click="Button_Click"/>
        <Label Name="label" Content="Thinking!!!!!!!" HorizontalAlignment="Left" Margin="12,45,0,0" VerticalAlignment="Top" Visibility="Collapsed"/>
    </Grid>
</Window>

MainWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        BigInteger factorial(int n)
        {
            BigInteger b = 1;
            for (int i = n; i > 1; i--)
                b *= i;
            return b;
        }

        BigInteger combination(int n, int r)
        {
            BigInteger top = factorial(n);
            BigInteger bottom = factorial(n - r);
            return top / (factorial(r) * bottom);
        }

        public MainWindow()
        {
            InitializeComponent();
        }

        async void clicked()
        {
            await calculate();
        }

        Task calculate()
        {
            return Task.Run(() =>
                {
                    for (int i = 1; i <= 1000; i++)
                    {
                        BigInteger b = combination(1000, i);
                    }

                    Dispatcher.Invoke(() =>
                        {
                            label.Visibility = System.Windows.Visibility.Collapsed;
                        });
                });
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            label.Visibility = System.Windows.Visibility.Visible;
            clicked();
        }
    }
}

Mouseover and press trigger in WPF

MainWindow.xaml

<Window x:Class="ButtonColor.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">

    <Window.Resources>
        <Style x:Key="ButtonStyle" TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid>
                            <Border Name="Border"
                                BorderThickness="2"
                                CornerRadius="3" 
                                BorderBrush="Gray" 
                                Background="{TemplateBinding Background}" />

                            <ContentPresenter 
                                x:Name="contentPresenter"
                                Content="{TemplateBinding Content}" 
                                VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" />
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="Border" Property="Background" Value="Magenta"/>
                            </Trigger>
                            <Trigger Property="IsPressed" Value="True">
                                <Setter TargetName="Border" Property="Background" Value="Yellow" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    <Grid>
        <Button Content="Click" 
                HorizontalAlignment="Left" 
                Margin="85,80,0,0" 
                VerticalAlignment="Top" 
                Width="215" 
                Height="35"
                Background="Aqua"
                Style="{StaticResource ButtonStyle}" />
    </Grid>
</Window>