解决 如何将计时器更改为事件处理福彩12选5走势图?

代数

会员
已加入
2020年5月9日
留言内容
8
编程经验
1-3
我有一个由外部设备更改的变量,该外部设备是检测面部的摄像机,该变量是字节数组,当未检测到面部时,该字节始终为零,但当检测到面部时,描述面部的字节存储在此变量中目前使用一种我不喜欢的方法是使用计时器

C#:
timer = new DispatcherTimer();

timer.Interval = TimeSpan.FromMilliseconds(0);

timer.Tick += Timer_Tick;

timer.IsEnabled = true;

timer.Start();



private void Timer_Tick(object sender, EventArgs e)

{

      人脸相机.Authenticate(cameraAddress, faceCode);

}

我想使用其他方式我愿意接受任何建议。

先感谢您。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,502
地点
悉尼,澳大利亚
编程经验
10+
如果要使用事件处理福彩12选5走势图,则需要一个事件来处理。那所指的对象 人脸相机 字段/属性暴露任何事件?您能否让我们知道实际情况,以便我们自己进行调查?当我们不知道该对象是什么时,我们无法特别建议您如何使用该对象。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
Perhaps I'm missing something... Isn't Timer_Tick() already an event handler, albeit an event handler for the timer. Is the question about how to get an event from 人脸相机? If so, then why not register for an event from that device? If the device offers no such event, then you're pretty much up a creek without a paddle. Your only alternative at that point is to write a wrapper around the device, setup a timer that occasionally checks, and then fire your own events when a face is recognized.
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,502
地点
悉尼,澳大利亚
编程经验
10+
Perhaps I'm missing something... Isn't Timer_Tick() already an event handler, albeit an event handler for the timer.
我的印象是,OP正在询问如何在发生某种情况时由对象本身通知,而不是使用Timer来定期轮询该对象以查看是否发生了某种情况。就像处理TextChanged事件一样,而不是使用Timer来定期检查Text属性并查看其是否已更改。
 

羊皮

退休福彩12选5走势图员
工作人员
已加入
2018年9月5日
留言内容
1,926
地点
英国
编程经验
10+

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,502
地点
悉尼,澳大利亚
编程经验
10+

代数

会员
已加入
2020年5月9日
留言内容
8
编程经验
1-3
谢谢你的答复
该DLL不是.net DLL,它是一个未管理的C ++ DLL,我没有它的文档或与DLL的创建者联系。所以使用WPF调度福彩12选5走势图计时器是一件坏事,我应该避免,如果这样的话,更好的方法是什么。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
那是什么图书馆?您可以提供指向DLL所在位置的链接吗?

If you don't have documentation, how did you know to call Authenticate() on it?
 

代数

会员
已加入
2020年5月9日
留言内容
8
编程经验
1-3
DLL的创建者创建了一个示例C ++应用福彩12选5走势图,该应用福彩12选5走势图具有该DLL中使用的功能,因此我从此示例中知道该DLL中要使用的API,并且在此示例应用福彩12选5走势图中它们还使用了一个计时器,我猜它是Win32 SetTimer函数所以我从这个示例应用福彩12选5走势图中获得了这个信息,过了一会儿我将这个示例应用福彩12选5走势图转换为C#WPF APP,我想到了将调度福彩12选5走势图计时器更改为更快,更省资源的事情
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
Well, then you are basically up that creek I was talking about earlier. Since you don't know any other way to get the 人脸相机 to tell you went something has happened, you are stuck in a situation where you have to poll the 人脸相机.

WPF调度计时器与WinForms / Win32API计时器不太相似。前者基于.NET Framework的线程计时器,而后者基于Windows GDI计时器对象。后者资源有限且相对昂贵。前者很便宜。
 

代数

会员
已加入
2020年5月9日
留言内容
8
编程经验
1-3
感谢您的帮助,因此您认为我必须像C ++示例应用福彩12选5走势图那样轮询API,但问题是当我运行该应用福彩12选5走势图并检查cpu使用率时,我发现它达到了15%,我认为它的cpu消耗量很小除了检测人脸并显示来自相机的图像流之外,没有其他用途的应用福彩12选5走势图。
 

羊皮

退休福彩12选5走势图员
工作人员
已加入
2018年9月5日
留言内容
1,926
地点
英国
编程经验
10+
我对使用任何使用15%CPU的DLL感到不满意。并假设您的PC相对较新。

您为什么选择这个特定的图书馆?
为什么要使用几乎没有指令的DLL?
当有很多库可供选择时,为什么要使用此DLL?

在当今时代,几乎所有内容都可以使用图书馆。为什么不使用其他东西?
这个库做什么,其他人没有?

听起来确实好像您需要对要进行的工作进行更多研究。如果这是用于面部检测,则可以在网络上找到许多其他来源,其中大部分都将记录在案。 。 。


我建议您寻找其他选择。
 

代数

会员
已加入
2020年5月9日
留言内容
8
编程经验
1-3
我是这家公司的新雇员,该公司如何用一些依赖此DLL的摄像头设备购买此DLL,他们聘请了我,并给了我此摄像头设备和所依赖的DLL,并且他们希望使用此特定摄像头的ac#应用我与他们争辩说,这个特定的DLL我们可以创建我们可以控制的自己的api,但他们不同意,或者他们不想为此摄像头支付更多,他们只需要一个C#应用福彩12选5走势图即可使用此DLL摄像头,所以我做了他们要求C#应用福彩12选5走势图运行正常的事情,但是CPU使用率的问题让我很烦。我可以通过从相机中删除捕获的图像流来降低cpu的使用率,因为这对于人脸检测API并不重要。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
是时候学习一些汇编编程并对C ++非托管DLL进行反向工程以了解该DLL的工作原理了。也许您会发现它还有其他入口点。也许其他入口点之一是注册回调的方法,以便您可以获取所需的事件效果。充其量是。更糟糕的是,您将理解为什么DLL如此占用CPU。

我感觉到贵公司购买的软件似乎已经失效了: FaceCode。安全便捷地获取软件。
 

代数

会员
已加入
2020年5月9日
留言内容
8
编程经验
1-3
我已经花了一段时间对这个DLL进行反向工程,但没有发现比他们在示例C ++应用福彩12选5走势图中使用的API多的API,而我公司购买的软件来自一个未知的公司,并且相机设备没有上面没有公司名称或类似黑匣子的东西
 
Last edited:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
好吧,如果那是您唯一可用的API,并且您的公司不允许您从头开始,那么您只能选择轮询。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,502
地点
悉尼,澳大利亚
编程经验
10+
向您开放的一个选项是创建自己的类,该类在内部进行轮询,然后在检测到更改时引发事件。该类可能具有设置轮询间隔的属性,以使您能够平衡资源使用和及时通知。然后,您可以在喜欢的任何地方使用该类,并像处理其他事件一样处理它的事件。如建议的那样,如果您使用的库的作者没有其他选择,则必须执行轮询。将其封装在您自己的类中可以使其余应用福彩12选5走势图代码更整洁,尤其是如果您需要在多个地方获取此通知时。您可以将该类型放在自己的库中,然后在多个应用福彩12选5走势图中使用它。

也就是说,您还应该确保检查带有回调的异步API。事件是C / C ++中不存在的高级语言概念。更原始的等效项是回调。在这种情况下,您将编写要在非托管代码中发生某些事情时执行的方法,为该方法创建一个委托,然后将该委托作为参数传递给非托管方法。这种方法的非托管签名将具有函数指针作为参数。当您的应用运行时,非托管代码将在发生感兴趣的事情时通过委托执行您的方法。无法保证存在这种方法,但一定要寻找一种方法。

基本上,这就是.NET中事件的工作方式。事件是委托列表,引发事件的对象通过这些委托调用每个事件处理福彩12选5走势图。例如,如果您有一个 纽扣 在表格上,表格处理 请点击 那件事 纽扣,您可以在表单中编写一个方法,为该方法创建一个委托并将委托传递给 纽扣。当用户单击 纽扣,它将调用委托并执行form方法。
 

代数

会员
已加入
2020年5月9日
留言内容
8
编程经验
1-3
感谢您的帮助和答复。

我发送到公司,我告诉他们我别无选择,只能轮询他们回答的api。好的,我们没有问题可以轮询api,这就是我将在我的应用福彩12选5走势图中使用的方法,而我的应用福彩12选5走势图仅用于测试我会当我为这台相机创建一个真正的产品时,尝试解决cpu使用问题。

再次感谢您的答复和帮助,我在其他论坛上写了这个问题,但是没人回答我,他们几乎阻止了我,但是在这个论坛上,我找到了解决我问题的方法,因此感谢这个论坛及其成员。
 

羊皮

退休福彩12选5走势图员
工作人员
已加入
2018年9月5日
留言内容
1,926
地点
英国
编程经验
10+
当我为这台相机创建一个真正的产品时,我将尝试解决cpu的使用问题。
那是极不可能的。它的DLL就是CPU的消耗。您说您已对DLL进行了反编译,如果这样,您是否没有发现任何可能导致CPU密集化的内容?任何人都猜为什么它是猪。示例代码中是否有任何内容可能导致CPU升高?我们都是x C ++福彩12选5走势图员,afaik。共享该示例可能会有所帮助。如果您不想这样做,则取决于您。 :)
再次感谢您的答复和帮助,我在其他论坛上写了这个问题,但是没人回答我,他们几乎阻止了我,但是在这个论坛上,我找到了解决我问题的方法,因此感谢这个论坛及其成员。
不客气
 

代数

会员
已加入
2020年5月9日
留言内容
8
编程经验
1-3
我不许分享与该项目有关的任何内容,我不知道为什么它不是一个特殊的代码,但这就是公司告诉我的,也许是因为他们为此付费。

我从应用福彩12选5走势图中删除了Camera图像流,这使该应用福彩12选5走势图看起来很丑陋,因为用户不会看到他脸上的任何图像,但是该福彩12选5走势图完成了检测人脸的工作,并且cpu的使用率从15%降低到4%
 
最佳 底部