我在 C# 中的一个方法上遇到了这个问题。我创建了一个从 dll 中调用函数的方法,其名为Phone.GetLampMode();
Now Phone.GetLampMode
不返回任何东西。数据在事件中返回 'onGetLampModeResponse
' 事件。有没有办法可以在我的方法中等待,直到从 onGetLampModeResponse 事件获取数据?
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();
}
一种解决方案是使用AutoResetEvent
:
public bool checkLamp(int iLamp)
{
Phone.ButtonIDConstants btn = new Phone.ButtonIDConstants();
btn = Phone.ButtonIDConstants.BUTTON_1;
btn += iLamp;
AutoResetEvent waitHandle = new AutoResetEvent(false);
// Pass waitHandle as user state
Phone.GetLampMode(btn, waitHandle);
// Wait for event completion
waitHandle.WaitOne();
return true;
}
private void Phone_OnGetLampModeResponse(object sender, Phone.GetLampModeResponseArgs e)
{
var test = e.getLampModeList[0].getLampMode.ToString();
// Event handler completed
// I guess there is some UserState property in the GetLampModeResponseArgs class
((AutoResetEvent)e.UserState).Set();
}
笔记:
您正在使用的广告Phone
作为静态类/变量,人们可以认为您正在 Windows Phone 上进行开发...如果是这种情况,请注意 WP 和异步编程的整个概念是不要以这种方式锁定 UI 线程.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)