Так вот у меня есть функцияКогда использовать «async» вместо того, чтобы возвращать новую задачу Task.Run?
static bool Login(SignupData sd)
{
bool success=false;
/*
Perform login-related actions here
*/
}
И есть еще одна функция
static Task<bool> LoginAsync(SignupData sd)
{
return Task.Run<bool>(()=>Login(sd));
}
Теперь, я наткнулся на несколько иной реализации этой модели, где вы бы добавить async
ключевое слово функция, которая возвращает Task<TResult>
(чтобы она выглядела так: async Task<TResult> LoginAsync(SignupData sd)
). В этом случае, даже если вы вернете TResult
вместо Task<TResult>
, программа все еще компилируется.
Мой вопрос здесь, какую реализацию следует предпочесть?
static Task<bool> LoginAsync(SignupData sd)
{
return Task.Run<bool>(()=>Login(sd));
}
ИЛИ этот?
async static Task<bool> LoginAsync(SignupData sd)
{
bool success=Login(sd);
return success;
}
переведите свой вопрос в код обзора обмена столами –
@KevinAvignon Пожалуйста, ознакомьтесь с правилами обзора кода, прежде чем предлагать отправлять вопросы там. – hvd
Вы должны получить предупреждение компилятора для второго метода. И ни одна из реализаций не является хорошей. Если вы не можете предоставить действительно асинхронный метод, просто не предоставляйте его. Вызывающий может всегда выполнять «Task.Run». –