using (System.Threading.CancellationTokenSource cancellationTokenSource = new System.Threading.CancellationTokenSource())
{
    RetZselectAsync r = null;
    MercatorUi._BaseClasses.ExclusiveBackgroundWorkerAsync ebwa = new MercatorUi._BaseClasses.ExclusiveBackgroundWorkerAsync(
                async () => r = await Api.ZselectAsync(Globals.RepData, reqSql, cancellationTokenSource: cancellationTokenSource),
                sigForm,
                cancellationTokenSource: cancellationTokenSource);
    if (cancellationTokenSource.IsCancellationRequested)
    {
        // l'utilisateur à cliqué sur Annuler
        return;
    }
    else if (r == null)
    {
        // une exception s'est produite dans le code de l'actionAsync
        Dialogs.Stop(ebwa.ExceptionDuringDoWork?.Message ?? "Unknown error!");
        return;
    }
    else if (r.Result == null)
    {
        // une erreur SQL s'est produite
        r.Zstoperror();
        return;
    }
    else
    {
        // tout va bien !
        DataSet dataSet = r.Result;
    }
}