c # async attendono l’implementazione

Ho qualche dubbio sulla progettazione della prossima funzione async / await di C #.

  1. La comodità di colbind il nuovo meccanismo all’attività Task
  2. Penso che sia meglio usare async sostituendo la parola chiave await. Per expaple: var result = async GetResultAsync();
  3. Il meccanismo per annullare un’operazione asincrona in corso utilizzando un token non è elegante come credo possa essere.

Async / away è una grande funzionalità, ma penso che non sia progettato come LINQ. Inoltre, sento che il team di design è pericolosamente soddisfatto del design attuale; e potrebbe non tenere conto del feedback della community.

Cosa pensi?

Async / away è una grande funzionalità, ma penso che non sia progettato come LINQ.

Quali aspetti del processo di progettazione ritieni siano carenti rispetto al processo di progettazione di LINQ?

Inoltre, ritengo che il team di progettazione sia pericolosamente soddisfatto del design attuale; e potrebbe non tenere conto del feedback della community.

Cosa ti dà questa impressione? Stiamo invitando il feedback della community da un po ‘di tempo. Non viene ignorato.

Cosa pensi?

Penso che questa sia una domanda di discussione e non una domanda di ingegneria. Sei sicuro che questo sia il sito giusto per questa domanda?

Questo tipo di decisioni di progettazione tendono a non avere molto senso fino a quando non hai provato a farlo da solo. Il tuo compito: scrivere codice asincrono e fermarlo quando vuoi. I tuoi vincoli: non puoi usare Thread.Abort () e non puoi mai causare deadlock.

  1. Hanno già investito molto lavoro in Task e Task , che è stato progettato per adattarsi perfettamente a questa situazione. Trovo questo molto conveniente, perché so esattamente cosa aspettarmi da un Task – averlo usato in precedenza – e penso che molti altri sviluppatori si sentiranno anche in questo modo. Secondo me è molto meglio che introdurre qualcosa di nuovo – e non sono nemmeno sicuro di cosa potrebbe essere diverso che renderebbe un nuovo tipo più all’altezza del compito. Hai qualche idea concreta?

  2. Penso che ti manchi lo scopo della parola chiave async . Viene utilizzato per contrassegnare i metodi che verranno (parzialmente) eseguiti in modo asincrono (quando si utilizza la parola chiave await ). È necessario che il compilatore conosca i metodi per “eseguire la magia”; non “converte” un metodo per essere eseguito in modo asincrono. Per quello dovresti usare ThreadPool.QueueUserWorkItem .

  3. Non posso davvero commentare questo. Quale sarebbe una soluzione più elegante secondo te? Sono sicuro che Microsoft prenderà in considerazione il tuo feedback se lo condividi con loro.