注册计时器已过事件

2024-01-21

我想创建一个初始化计时器的类,该计时器将用作其他类成员的中央核心,以便为计时器已过事件注册自己。我的问题是我真的不知道如何向其他类公开计时器已用事件。我认为可能有效的一种解决方案是,我只需将计时器公开为公共属性,该属性将返回计时器对象,并且我可以从此对象调用计时器已用事件,例如:

MyAppTimer appTimer = new MyAppTimer();
Timer timer = appTimer.GetAppTimer;
timer.Elapsed += SomeMethod;

但通过这个解决方案,我将暴露我不想要的整个计时器。如何在 MyAppTimer 类中传入一个方法,该方法将在内部注册该方法与计时器的已用事件?跟代表有关系吗?也许是这样的:

public void RegisterHandler(someStuffGoesHere) //What do I pass in here?
{
  timer.Elapsed += someStuffGoesHere;
}

您可以使用显式访问器创建事件:

public event EventHandler TimerElapsed
{
    add { timer.Elapsed += value; }
    remove { timer.Elapsed -= value; }
}

您班级的客户端可以直接订阅 TimerElapsed 事件:

appTimer.TimerElapsed += SomeHandlerMethod;

如果您想使用代码中所示的 RegisterHandler 方法,则参数的类型应为 EventHandler

EDIT:请注意,使用这种方法,sender 参数的值将是 Timer 对象,而不是 MyAppTimer 对象。如果这是一个问题,你可以这样做:

public MyAppTimer()
{
    ...
    timer.Elapsed += timer_Elapsed;
}

private void timer_Elapsed(object sender, EventArgs e)
{
    EventHandler handler = this.TimerElapsed;
    if (handler != null)
        handler(this, e);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

注册计时器已过事件 的相关文章

  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 按成员序列化

    我已经实现了template
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 重载<<的返回值

    include
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 带有 do_action 短代码的 Visual Composer Grid 不起作用

    我有充满主题的视觉作曲家 当我将以下网格短代码放入编辑器的页面中时 它可以正常工作 vc basic grid post type post type max items 10 项目 masonryGrid SlideFromLeft gr
  • 通过 npm 安装 firebase 时遇到错误 |解析附近时 JSON 输入意外结束[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在尝试在我的新 React 项目中安装 firebase 但无法安装它 不管是错误还是npm都需要时间 我等了半个多小时 试试这个 你可
  • 在 NSTableView 中重新加载数据但保留当前选择

    我有一个NSTableView显示目录的内容 我监视 FSEvents 每次收到事件时 我都会重新加载表视图 不幸的是 当前的选择随后消失了 有办法避免这种情况吗 好吧 您可以在调用 reloadData 之前保存选择并在之后恢复它 NSI
  • 如何隐藏 Apple Watch 状态栏上的后退按钮?

    我想从状态栏中隐藏 Apple Watch 应用程序的后退按钮 我使用可编程的 segue 进行导航 但我想隐藏 禁用后退按钮 是否可以 您可以这样做 WKInterfaceController reloadRootControllersW
  • WPF Expander:反转图标方向,同时保持内容位置(ExpandDirection)相同

    我将 WPF 扩展器用作抽屉 它向上扩展 使标题保持在内容上方 当它折叠时 它所在的网格单元也会变小 我希望展开方向保持向下 以便内容填充在其下方 但是因为它向上移动 所以如果带有方向箭头的图标位于相反的方向 就像 ExandDirecti
  • HTML5 占位符在焦点上消失

    有没有免费的 jQuery 插件可以改变placeholder行为是否符合 HTML5 规范 Before Focus On Focus Good Safari On Focus Bad Chrome Firefox 您可以执行浏览器的操作
  • 使用阈值在 ImageMagick 中将任何白色像素设置为透明?

    使用 ImageMagick 我想找到任何白色像素并使它们透明 我想关键是 临界点但我不知道如何使用将白色像素更改为透明 临界点 任何建议都非常感激 convert input png fuzz 10 transparent white o
  • 如何避免Python中的循环导入? [复制]

    这个问题在这里已经有答案了 我知道 python 中的循环导入问题之前已经出现过很多次 并且我已经阅读了这些讨论 在这些讨论中反复提出的评论是 循环导入是糟糕设计的标志 应该重新组织代码以避免循环导入 有人可以告诉我在这种情况下如何避免循环
  • MariaDB/MySQL 选择查询将 id 的 json 数组替换为串联值

    我不太熟悉数据库查询 但我想执行以下操作 在表中 我存储了一列标签 ID 例如 1 6 8 我想回来 Music Dance Pop 例如在我的选择查询中 我没有设计数据库架构 也不允许我修改它 我想这样做的原因是这个查询的响应将直接发送到
  • javah 帮助 - “命令行上未指定类”

    我正在运行安装了 Eclipse 的 Ubuntu Linux 并且我正在尝试使用 JNI 为此 我需要使用 javah 但它似乎不起作用 我最近刚刚安装 Ubuntu 对 Linux bash shell 不熟悉 对于我名为 myJNI
  • 如何更改 JasperReports 的实际名称?

    我正在使用 Java 生成已编译的 jasper 报告的 PDF 预编译的报告名称为 statsReport 报告正确生成 问题是何时需要保存文件 我尝试通过 JasperPrint 对象更改报告名称 jasperPrint setName
  • 将大型打字稿文件拆分为跨多个文件的模块

    我目前有一个很大的打字稿文件 我想拆分它 有一些函数和变量仅在文件中使用 以及一些类 目前看起来是这样的 var numbers 1 2 3 function formatDate class Widget class Section 我尝
  • VBA字表复制丢失数据

    我继承了一些 VBA 代码 它将 Word 文档中的表格内容复制到 Excel 该代码本身来自 Excel 插件 该插件使用后期绑定调用 Word 以避免在旧版本的 Excel 中使用时出现引用错误 该插件本身在 Office 2016 中
  • Android:Google 地图 Android API:授权失败

    当我的应用程序尝试使用 Google Maps API 时 当我尝试访问 Google Map API 数据时 我会立即收到以下 logcat 错误 向右滚动以查看好东西 02 02 15 39 35 329 23868 24511 com
  • Android Xamarin TreeView nLevels

    我花了很多时间来探索如何在 Android Xamarin 中实现 TreeView 但不幸的是似乎没有任何例子说明这一点 我尝试使用可扩展列表视图但它只支持2级类别 我需要有人提供有关此内容的任何指南或一些相关示例 目的是探索服务器上的文
  • 挂起函数“callGetApi”只能从协程或另一个挂起函数调用

    我正在从 onCreate 调用挂起函数 override fun onCreate savedInstanceState Bundle callGetApi 暂停的功能是 suspend fun callGetApi 但错误出现了挂起函数
  • 将 Base64 编码的图像字符串加载到 JLabel 中

    我让转换器在这里工作 public class ImageProcessor public static void Base64TImage String base64 try byte btDataFile new sun misc BA
  • mailto:链接无法在cordova应用程序中打开Android上的邮件应用程序

    这真让我抓狂 我正在开发一个 Ionic 应用程序 Cordova Angular 等 我有一个联系我们链接 其中包含 mailto href href mailto email protected cdn cgi l email prot
  • 跨站脚本攻击和同源策略

    我熟悉持久性和非持久性XSS http en wikipedia org wiki Cross site scripting 我也知道同源政策 http en wikipedia org wiki Same origin policy防止
  • 注册计时器已过事件

    我想创建一个初始化计时器的类 该计时器将用作其他类成员的中央核心 以便为计时器已过事件注册自己 我的问题是我真的不知道如何向其他类公开计时器已用事件 我认为可能有效的一种解决方案是 我只需将计时器公开为公共属性 该属性将返回计时器对象 并且