C # Threading / Async: Exécuter une tâche en arrière-plan alors que l'interface utilisateur est interactif

Après avoir fait le tour sur les deux Async/Await et le Filetage, je suis toujours pas sûr de la bonne façon de l'appliquer à ma situation. Peu importe la variation que j'essaie de mon INTERFACE plane encore parce que je ne semble pas être l'appel de ma fonction de votre choix de manière asynchrone, en outre, je peut en effet avoir besoin d'enfiler pour ma solution.

Ce que je suis en train de faire: j'ai une application WPF sur lequel il y a un bouton que je voudrais démarrer une opération qui permet l'interaction avec le programme, par le biais de l'INTERFACE utilisateur ou autre. Une fois qu'une condition est remplie, qui est déterminée à l'extérieur de cette fonction, la fonction doit se terminer. Pour moi, cela semble assez standard, mais j'ai un sentiment que je ne suis malentendu quelque chose et j'ai mis en œuvre de façon incorrecte.

Ce que j'ai en ce moment:

private async void start_button_Click(object sender, RoutedEventArgs e)
{
    await StaticClass.MyFunction();
}

private void stop_button_Click(object sender, RoutedEventArgs e)
{
    StaticClass.stopFlag = true;
}

public static Task<int> myFunction()
{
    //Stuff Happens

    while(StaticClass.stopFlag == false)
        //Do Stuff

    //Stuff Happens

    return Task.FromResult(1) //I know this is bad, part of the reason I'm asking
}

J'espérais pour quelques conseils sur si j'aborde ce la bonne manière et de toute réflexion sur ce que je fais mal.

source d'informationauteur Karoly S