在方法内部等待,直到捕获事件

2023-11-23

我在 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(使用前将#替换为@)

在方法内部等待,直到捕获事件 的相关文章

随机推荐

  • Grails RemoteFunction 参数语法

    我正在尝试将几个参数传递给 grails 中的 RemoteFunction 但我很难正确格式化它 我想传递页面上的一段数据的值加上我刚刚跳出的文本框的值 所以在我的 onblur 中我有一些类似的内容 onblur remoteFunct
  • 蓝牙和delphi,怎么样?

    我想使用蓝牙将文件发送到设备 手机 没什么花哨的 但我不知道应该从哪里开始寻找司机 也许你们中的一个人以前使用过蓝牙 可以给我一个起点 我在 Indy 中添加了一些蓝牙支持 因为你只能 通过套接字读取 写入蓝牙 使用 Windows 套接字
  • MongoDB:更新一个字段上的每个文档

    我有一个集合名为foo假设地 每个实例foo有一个名为 lastLookedAt 的字段 它是自纪元以来的 UNIX 时间戳 我希望能够通过 MongoDB 客户端并将所有现有文档 大约 20 000 个 的时间戳设置为当前时间戳 处理这个
  • 访问 Django 模板中的 Javascript 变量

    有什么办法可以访问吗javascript变量在Django模板tags 我可以做这样的事情吗 if javascriptvar 0 do this else do this endif 不 Django 模板是在服务器端编译的 然后它被发送
  • 更改数据库/添加文件/变量文件名?

    我想将文件 文件组添加到现有数据库 但我需要从变量获取路径 因为当此脚本完成时它会有所不同 当我在 SQL Management Studio 2008 R2 中检查脚本时 它返回一个错误FILENAME Path 我该如何使用该变量 脚本
  • 如何判断 UILabel 何时被截断和/或其换行位置将发生变化

    我有一个多线UILabel numberOfLines 0 它的宽度可以在运行时改变 有时这会导致截断和 或重新包装 一些例子最好地说明了这一点 示例 1 宽度的减小导致不同的断线点 示例2 宽度减少导致截断 示例 3 宽度的减小导致截断和
  • 缺少节点的 xpath

    我有以下 xml
  • 如何根据方向元数据旋转 JPEG 图像?

    我有一些服务器代码在上传图像时生成缩略图 问题是 当拍摄图像并旋转相机 设备时 缩略图也会旋转 即使全尺寸图像本身在任何图像查看软件中都以正确的方向显示 只有 jpg 才会出现这种情况 使用 OSX 上的预览 我可以看到 jpg 中嵌入了方
  • 我可以将 Flex 组件属性绑定到函数吗?

    我想设置enabled按钮上的属性基于具有一个或多个参数的函数的返回值 我怎样才能做到这一点 private function isUserAllowed userName Boolean Boolean if userName Tom r
  • 使用 Graph API 将图像从 .NET 发布到 Facebook 墙

    我正在使用 Facebook 的 Javascript API 开发一个应用程序 该应用程序需要能够将图像发布到用户墙上 据我所知 应用程序的这一部分需要位于服务器端 因为它需要将图像数据发布为 多部分 表单数据 注意 这不是简单的 pos
  • java.lang.NoSuchMethodException:类“class java.lang.String”上的未知属性“”

    我想将对象列表传递给 jasper 报告中的列表组件 我正在使用 list1 的数据源表达式是新的net sf jasperreports engine data JRBeanCollectionDataSource参数类是java uti
  • Glassfish 服务器适配器未显示在 Eclipse 的列表中

    我成功安装了 Glassfish Tools for Kepler 但是 除了 Apache Basic JBoss 和 ObjectWeb 之外 我在服务器向导中没有看到 GlassFish 的条目 File gt New gt Othe
  • 如何在 NumPy 中将 CSV 数据读入记录数组?

    有没有直接的方法将CSV文件的内容导入到记录数组中 就像R的方式一样read table read delim and read csv 将数据导入 R 数据框 或者我应该使用csv reader 然后申请numpy core record
  • 二进制减法 - Python

    我想做一个二进制计算器 但减法部分有问题 这是我的代码 我尝试根据我在该网站上找到的代码进行改编 maxlen max len s1 len s2 s1 s1 zfill maxlen s2 s2 zfill maxlen result c
  • 在 Twitter Bootstrap CSS 中覆盖“背景:透明!重要”

    有一个可以绘图的应用程序divs 以背景颜色作为其图形 这些 div 在屏幕上看起来很好 但是div打印为 PDF 时 s 消失 将该问题追溯到 Twitter Bootstrap CSS 当 Bootstrap CSS 不存在时 div
  • doFilter 没有被调用

    你能帮忙检查一下为什么 doFilter 没有被调用吗 web xml
  • 按后退按钮退出应用程序,而不是在 WebView 中向后导航

    我正在开发一个 WebView android 应用程序 我无法修复应用程序中的向后导航问题 我正在使用这段代码并尝试对此进行所有修改 public class DeviceActivity extends Activity private
  • 对于无符号数和有符号数的补码,哪些算术运算是相同的?

    我正在设计一个简单的玩具指令集和随附的模拟器 并且正在尝试找出支持哪些指令 在算术方面 我目前有无符号加法 减法 乘法和除法 但是 我似乎无法找到以下问题的明确答案 哪些算术运算符需要签名版本 哪些算术运算符的无符号和补码签名版本等效 例如
  • Spring - 是否可以在同一应用程序中使用多个事务管理器?

    我是 Spring 新手 我想知道是否可以在同一个应用程序中使用多个事务管理器 我有两个数据访问层 一个用于两个数据库 我想知道 如何在一层使用一个事务管理器 在另一层使用不同的事务管理器 我还不需要跨两个数据库执行事务 但我确实需要在每个
  • 在方法内部等待,直到捕获事件

    我在 C 中的一个方法上遇到了这个问题 我创建了一个从 dll 中调用函数的方法 其名为Phone GetLampMode Now Phone GetLampMode不返回任何东西 数据在事件中返回 onGetLampModeRespons