Creando uno o più attendenti e attendibili, è possibile creare coroutine in C#?C# async, attende senza attività
Idealmente mi piacerebbe essere in grado di scrivere qualcosa di simile:
void async Click() {
var mouse_position = await left_mouse_click();
await shoot_projectile();
}
e quindi ottenere dal metodo Click qualcosa che posso neanche attendere all'interno di un altro metodo asincrono o che posso iterare in modo esplicito con alcuni MoveNext/Metodo GetResult.
L'obiettivo finale è che ho bisogno di integrare C# async/await con coroutines monadiche F # per un framework di sviluppo del gioco (http://casanova.codeplex.com).
Sì, sembra proprio questo. Ho solo bisogno di essere in grado di cedere all'interno di un asincrono e passare attraverso tutti i rendimenti risultanti da un ciclo esterno, ma non riesco a trovare informazioni su come farlo ... –
'Task's non sono stati progettati per questo. Il team Rx ha iniziato a lavorare su un 'IAsyncEnumerator' che ha il comportamento che stai descrivendo (c'è un vecchio video Channel9 su di esso), ma quel lavoro è stato quasi abbandonato perché non è quasi mai l'approccio giusto. Vi consiglio invece di usare regolarmente Rx. –
Aggiungendo la continuazione a un elenco globale di continuazioni che posso quindi rilassarmi all'interno di una personalizzazione attendibile, posso emulare ciò di cui ho bisogno. Sono ancora costretto a restituire un Task se voglio un metodo asincrono non vuoto, e questo sembra strano! –