我需要 Hook Windows 窗体应用程序中的消息循环来执行一些与滴答计数相关的工作。
我正在使用异步方法(async/await)开发一个 tcp 服务器,我避免在多线程进程中处理竞争条件——这基本上是我使用 async/await 而不是其他模型的原因.由于此限制,我无法创建后台线程来执行滴答计数,因为这样我将以多线程代码告终。
我认为的一个选择是以某种方式连接 Windows 窗体中的消息循环,这样我就可以使用我的 Windows 窗体对象的同一线程轻松地完成与滴答计数相关的事情,尽管我没有找到任何合适的方法或 Windows.Forms.Application 类中的事件。
有谁知道我需要的方法吗?
谢谢。
最佳答案
我认为您最好的方法可能是使用计时器,它会在定时间隔内执行您的代码:
var aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = 5000;
aTimer.Enabled = true;
// What you want to happen when the Elapsed event is raised.
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
// Do something
}
关于c# - 在 Windows 窗体应用程序中 Hook 消息循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36824929/