Если используете TPL то например так можно.
async Task Foo() {}
async Task Foo2()
{
var task = Foo();
if (await Task.WhenAny(task, Task.Delay(1000)) == task)
{
// задача успела выполниться за таймаут
}
else
{
// задача не успела выполниться за таймаут
}
}