In .NET, Windows 8 e Windows Phone 7 Ho codice simile a questo:Portable libreria di classi equivalente di Dispatcher.Invoke o Dispatcher.RunAsync
public static void InvokeIfRequired(this Dispatcher dispatcher, Action action)
{
if (dispatcher.CheckAccess())
{
action();
}
else
{
dispatcher.Invoke(action);
}
}
Come potrei fare qualcosa nella libreria di classi portatile? Sarebbe bello avere una sola implementazione agnostica della piattaforma. La mia idea è di usare la TPL che non è disponibile in WP7 ma sicuramente lo sarà presto.
L'unica cosa di cui non sono sicuro è quali sarebbero le implicazioni in termini di prestazioni. Forse farò dei test.
Nice. Sembra che tu abbia creato un corso, ma che abbia pubblicato il metodo solo in modo tale che una nota (forse ovvia) per gli altri. this.synchronizationContext deve essere assegnato nel thread in cui si desidera eseguire l'azione prima di chiamare il metodo. In realtà ho modificato sopra un po 'e creato un'estensione: public Task RunAsync (questo contesto SynchronizationContext, Action action). Ora è più simile alla risposta originale in quanto può stare da solo. Il meglio di entrambe le risposte. :) – Wes