In che modo il supporto Async C# 5 aiuterà i problemi di sincronizzazione del thread dell'interfaccia utente?

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/114605

  •  03-11-2019
  •  | 
  •  

Domanda

Ho sentito da qualche parte che l'asincronizzazione del C# 5 sarà così fantastico che non dovrai preoccuparti di farlo:

if (InvokeRequired)
{
    BeginInvoke(...);
    return;
}
// do your stuff here

Sembra che il callback di un'operazione di attesa avverrà nel thread originale del chiamante. È stato dichiarato più volte da Eric Lippert e Anders Hejlsberg che questa funzione ha avuto origine dalla necessità di rendere le UIS (in particolare il dispositivo touch UIS) più reattivo.

Penso che un uso comune di tale funzionalità sarebbe qualcosa del genere:

public class Form1 : Form
{
    // ...
    async void GetFurtherInfo()
    {
        var temperature = await GetCurrentTemperatureAsync();
        label1.Text = temperature;
    }
}

Se viene utilizzato solo un callback, l'impostazione del testo dell'etichetta aumenterà un'eccezione perché non viene eseguito nel thread dell'interfaccia utente.

Finora non sono riuscito a trovare alcuna risorsa che conferma che questo è il caso. Qualcuno ne sa? Ci sono documenti che spiegano tecnicamente come funzionerà?

Si prega di fornire un link da una fonte affidabile, non rispondere solo a "sì".

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top