gpt4 book ai didi

events - 事件监听器是否使用CPU时间

转载 作者:行者123 更新时间:2023-12-02 02:47:48 25 4
gpt4 key购买 nike

也许这是一个愚蠢的问题,但是事件监听器是否像计时器一样使用 CPU 周期,或者它们在事件触发之前处于非事件状态?

它是特定于语言的,还是所有语言处理这个问题的方式基本相同?

我想编写一个小型服务,仅在触发网络断开事件时执行任何操作,并且我不希望该服务仅在监听时耗尽资源(当然除了内存)。

我打算做这样的事情

using NetworkUtilities;
ManagementEventWatcher networkAdapterArrivalWatcher = new ManagementEventWatcher("\\root\\wmi","SELECT * FROM MSNdis_NotifyAdapterArrival ");
networkAdapterArrivalWatcher.Options.Timeout = new TimeSpan(0,0,5);

ManagementEventWatcher networkAdapterRemovalWatcher = new ManagementEventWatcher("\\root\\wmi","SELECT * FROM MSNdis_NotifyAdapterRemoval " );
networkAdapterRemovalWatcher.Options.Timeout = new TimeSpan(0,0,5);

ConnectionNotifierHandler handler = new ConnectionNotifierHandler();
networkAdapterArrivalWatcher.EventArrived += new EventArrivedEventHandler(handler.Arrived);
networkAdapterRemovalWatcher.EventArrived += new EventArrivedEventHandler(handler.Removed);

//Start watching for events
networkAdapterArrivalWatcher.Start();
networkAdapterRemovalWatcher.Start();

public void Arrived(object sender, EventArrivedEventArgs e)
{
using (ManagementBaseObject ev = e.NewEvent)
{
//Log the event
}
}

public void Removed(object sender, EventArrivedEventArgs e)
{
using (ManagementBaseObject ev = e.NewEvent)
{
//Log the event
}
}

最佳答案

在 C# 中,事件仅仅是函数委托(delegate)(函数指针),它将“按需”调用,并且不会使用任何额外的 CPU 周期。

但是,如果您指的是监视事件,例如:

  • OnConnecitonPending 用于某些套接字监听器。
  • OnWindowMessage 用于窗口应用程序。

我认为那些肯定会使用线程来监视他们的事件,当然会花费额外的 CPU。

关于events - 事件监听器是否使用CPU时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1402069/

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