Durch Erstellen eines oder mehrerer Warter und Erwartungswerte, ist es möglich, in C# Coroutinen zu erstellen?C# async, warten ohne Tasks
Im Idealfall würde Ich mag Lage sein, etwas zu schreiben wie:
void async Click() {
var mouse_position = await left_mouse_click();
await shoot_projectile();
}
und dann aus der Click-Methode etwas zu erhalten, die ich entweder in einem anderen async Verfahren erwartet oder dass ich explizit mit einigen Movenext laufen kann/GetResult-Methode.
Das Endziel ist, dass ich C# async/await mit F # monadischen Coroutinen für ein Spielentwicklungsrahmenwerk integrieren muss (http://casanova.codeplex.com).
Ja, das sieht so aus. Ich muss nur in der Lage sein, in einem Async nachzugeben und alle resultierenden Renditen aus einer externen Schleife zu durchlaufen, aber ich kann keine Informationen darüber finden, wie man das macht ... –
'Tasks' sind dafür nicht gedacht. Das Rx-Team hat mit der Arbeit an einem "IAsyncEnumerator" begonnen, der das von dir beschriebene Verhalten hat (es gibt ein altes Channel9-Video), aber diese Arbeit wurde fast aufgegeben, weil es fast nie der richtige Ansatz ist. Ich empfehle, stattdessen reguläres Rx zu verwenden. –
Indem ich die Fortsetzung zu einer globalen Liste von Fortsetzungen hinzufüge, kann ich mich dann in einem Brauch entspannen, ich kann emulieren, was ich brauche. Ich bin immer noch gezwungen, eine Aufgabe zurückgeben, wenn ich eine non-void async-Methode möchte, und das scheint seltsam! –