Kiedy nazwane argumenty mogą pomóc

Posted on Updated on

Taki kod:

var users = await UploadUsers();

Po zrozumieniu jak działa await/async (np po artykule Async and Await: Context) wiem, że powinno się dodawać metodę ConfigureAwait()it():

var users = await UploadUsers().ConfigureAwait();

Podczas Code Review zauważyłem, że kolega wrzucił jednak taki kod:

var users = await UploadUsers().ConfigureAwait(continueOnCapturedContext: false);

Nie rozumiałem po co dorzucać nazwane argumenty z wartością taka jak domyślna. Przekowałem się że jest to jednak czytelniejsze “co tak naprawdę się dzieje”, ponieważ samo ConfigureAwait() nie wiele mówi. Ostatecznie skończyło się na extension method:

    public static class TaskExtension
    {
        public static ConfiguredTaskAwaitable ConfigureAwaitWithoutReturnToContext(this Task task)
        {
            return task.ConfigureAwait(continueOnCapturedContext: false);
        }
    }
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s