Я хочу, чтобы в моем вызове был метод async
, который будет вызываться потребителями моей библиотеки с await
.Но внутренняя работа моего метода, хотя он мне нужен для запуска в отдельном потоке, не вызывает никаких других await
самостоятельно.
Я просто выполняю работу, которую должен делать метод, и возвращаютип.И компилятор предупреждает меня, что этот метод не будет работать асинхронно.
public async Task<MyResultObject> DoSomeWork()
{
MyResultObject result = new MyResultObject();
// Some work to be done here
return result;
}
С другой стороны, если я напишу метод, который запускает новую задачу с помощью TaskFactory, например:
public Task<MyResultObject> DoSomeWork()
{
return Task<MyResultObject>.Factory.StartNew(() =>
{
MyResultObject result = new MyResultObject();
// Some work to be done here
return result;
});
}
Тогда я не могу вызвать его с помощью ключевого слова await
, например: await DoSomeWork()
.
Как написать async
(должен быть асинхронным, а не задачей с результатом или ожиданием) без использования некоторыхawait
позвонить внутрь?