gpt4 book ai didi

c# - 在方法内部等待,直到事件被捕获

转载 作者:可可西里 更新时间:2023-11-01 08:43:38 24 4
gpt4 key购买 nike

我对 C# 中的一个方法有这个问题。我创建了一个方法,该方法从名为 Phone.GetLampMode(); 的 dll 中调用一个函数现在 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 线程

关于c# - 在方法内部等待,直到事件被捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15242831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com