如何进行监视.等待处理消息队列

本文关键字:消息 队列 处理 等待 何进行 监视 | 更新日期: 2023-09-27 18:26:12

我使用的是.NET 4.0(没有异步)。

我正在寻找Monitor.Wait和Application.Run的组合。我浏览了对象资源管理器,但找不到。

它存在吗?如果没有,实施它的最佳方式是什么

我仍然什么都没试过,因为我脑子里想的都很脏。类似这样的东西:

while (!(timeOutHasBeenReached || aLockHasBeenAcquired))
{
    Application.DoEvents() ; 
}

为了避免XY问题,让我介绍一下最终目标(与单元测试有关):

using (ApplicationContext applicationContext = new ApplicationContext()) 
{
    using (Control control = new Control() { Visible = true } )
    {
        // control will do something across the web 
        // When the control has done it, it will raise an event invoking applicationContext.Exit() 
        // As a web connection is not always timing trustfull I'd like 
        // to specify a timeout (or eventually abort it with a Monitor.Pulse)
        Application.Run(applicationContext);         
    }
}

控件是一个Winform组件,我不能修改它,也不想做Thread.Abort

如何进行监视.等待处理消息队列

不能通过执行control.Invoke(() => Application.Exit());中止吗?或者仅仅是control.Close();Dispose