2015-09-08 2 views
-4
async Task Task_MethodAsync() { /* . . . */ } 
await Task_MethodAsync(); 

Как мы можем объединить их в одном блоке, где anonymous async task тропы await ключевых слов, который выглядит, как показано ниже?асинхронной и ждут вместе

await async Task { /* . . . */ }; 
+3

Просьба уточнить ваш вопрос, поскольку в настоящее время он не имеет никакого смысла. Что означает * анонимная асинхронная задача *? –

+0

Пытается превратить асинхронный/ждущий синхронный стиль. – sof

+1

Тем не менее, не имеет большого смысла. –

ответ

3

Мне кажется, что вы хотите определить анонимную асинхронную задачу.

Вы можете сделать следующее:

var taskAction = Task.Run(() => { /* .... */ }); 
var actionResult = await taskAction; 

var taskFunction = Task.Run(async() => { 
    var innerTask = someInnerTask(); 
    // Do something 
    var innerTaskResult = await innerTask; 
    // Handle result 
    return someValue; 
}); 
var functionResult = await taskFunction; 

В качестве альтернативы, вы можете сделать:

var actionResult = await Task.Run(() => { /* .... */ }); 
var functionResult = await Task.Run(() => { /* .... */ return someValue; }); 

Пожалуйста, обратите внимание, что оба действия и функции делегаты не получают каких-либо входных аргументов, а в случае функции, он должен вернуть Задача или Задача <> экземпляр.

+0

Можем ли мы «ждать Task.Run (async() => {/ * .... * /});'? – sof

+1

@sof, да, вы можете, до тех пор, пока вы также ждете некоторую внутреннюю задачу в своем анонимном делетете –

+0

Делает ли 'Task.Run (async() => {/ * .... * /});' spawn new thread ? – sof

Смежные вопросы