Como cancelar uma tarefa em execução?

Quero cancelar uma tarefa em execução (quando os usuários pressionam a tecla Esc). quando clico na tecla "escape", Form_KeyDown é executado, mas não cancela a tarefa!

CancellationTokenSource tokenSource = new CancellationTokenSource();
CancellationToken token=new CancellationToken();

private async void Search_Button_ClickAsync(object sender, EventArgs e)
{
  token = tokenSource.Token;
  await (Task.Factory.StartNew(() =>
           {
             //...my program
           },
           token));

private void Form_KeyDown(object sender, KeyEventArgs e)
{
  if (e.KeyCode == Keys.Escape)
  {
    tokenSource.Cancel();
  }
}

questionAnswers(1)

yourAnswerToTheQuestion