Ho ereditato il codice in cui BeginInvoke viene chiamato dal thread principale (non un thread in background, che di solito è il pattern). Sto cercando di capire cosa fa effettivamente in questo scenario.Implicazioni sulle prestazioni di BeginInvoke
Il metodo richiamato in BeginInvoke si allinea ai messaggi che arrivano fino alla finestra? I documenti dicono asynchronously
, quindi questa è la mia ipotesi.
Come fa la priorità del framework quando avviare il metodo chiamato BeginInvoke?
Edit: Il codice è simile al seguente:
System.Action<bool> finalizeUI = delegate(bool open)
{
try
{
// do somewhat time consuming stuff
}
finally
{
Cursor.Current = Cursors.Default;
}
};
Cursor.Current = Cursors.WaitCursor;
BeginInvoke(finalizeUI, true);
Questo sta accadendo nel Form_Load.
@John Knoeller, stai dicendo che nel mio scenario, BeginInvoke ha il peso dell'interruttore di contesto del thread? – AngryHacker
@AngryHacker: No, ora che hai mostrato il tuo codice, è chiaro che questo è solo un PostMessage come descritto da JaredPar, il tuo BeginInvoke è un metodo sul modulo, e quindi _non_ esegui il delegato su un thread separato. –