Ho riscontrato questo problema con un metodo in C#. Ho creato un metodo che chiama una funzione da una DLL denominata Phone.GetLampMode();
Ora Phone.GetLampMode
non restituisce nulla. I dati vengono restituiti in un evento "onGetLampModeResponse
". C'è un modo in cui posso aspettare nel mio metodo fino a quando non ottengo i dati dall'evento onGetLampModeResponse?Attendere il metodo interno finché non viene catturato l'evento
public bool checkLamp(int iLamp)
{
Phone.ButtonIDConstants btn = new Phone.ButtonIDConstants();
btn = Phone.ButtonIDConstants.BUTTON_1;
btn += iLamp;
Phone.GetLampMode(btn, null);
return true;
}
private void Phone_OnGetLampModeResponse(object sender, Phone.GetLampModeResponseArgs e)
{
var test = e.getLampModeList[0].getLampMode.ToString();
}
Qual è il secondo parametro di GetLampMode? Fammi indovinare: un oggetto che puoi definire te stesso? E questo oggetto è il 'sender' nel gestore di eventi o all'interno di' e'? EDIT: Sì, si chiama userState. È possibile recuperare questo userState all'interno della variabile 'e' nella funzione di callback. – sinni800
Posso pensare a una brutta soluzione definendo un 'bool' globale che è impostato su' true' da 'OnGetLampModeResponse' e controllato in un ciclo da' checkLamp'. –
@JohnWillemse è abbastanza brutto e non dovrebbe essere fatto poiché esiste il concetto di passare le variabili di stato agli eventi. – sinni800