powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Task.ExceptionFromResult ?
4 сообщений из 4, страница 1 из 1
Task.ExceptionFromResult ?
    #38896271
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Какой есть аналог для Task.FromResult в случае если нужно выбросить исключение ?

Код: c#
1.
2.
3.
4.
public async Task<string> MyFunc (...)
{
  // как выбросить ArgumentException, если переданы не корректные параметры ?
}
...
Рейтинг: 0 / 0
Task.ExceptionFromResult ?
    #38896351
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант просто
Код: c#
1.
throw new ArgumentException("some argument");


подходит? Другой вариант - использовать TaskCompletionSource.
...
Рейтинг: 0 / 0
Task.ExceptionFromResult ?
    #38896380
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya81,

Да вот нагуглил такой вариант решения с TaskCompletionSource:

Код: c#
1.
2.
3.
4.
5.
6.
internal static Task<T> Error<T>(Exception e)
    {
        var tcs = new TaskCompletionSource<T>();
        tcs.SetException(e);
        return tcs.Task;
    }



Но интересует насколько он корректен. Не будет некорректного стека вызовов ?
Не хочется же везде, где нужно бросить исключение, писать эту лапшу с TaskCompletionSource.

Кажется
throw new ArgumentException
подойдет если метод помечен как async. Если же нет - то не подойдет.
...
Рейтинг: 0 / 0
Task.ExceptionFromResult ?
    #38896408
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужно не помечать, как async, то TaskCompletionSource я и использую. В т. ч. если нужно callback превратить в async. Со стеком вызовов особых проблем не помню, но если exception, то глубже этого метода вызова всё равно нет. Если громоздко, можно написать свой метод-расширение для Task, в который включить вот это.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Task.ExceptionFromResult ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]