如何使用处理消息队列执行Monitor.Wait?

时间:2015-12-08 17:00:46

标签: c# multithreading winforms monitor

我正在使用.NET 4.0(没有异步)。

我正在寻找Monitor.WaitApplication.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);         
    }
}

Control是一个Winform组件,我无法修改,我不想Thread.Abort

1 个答案:

答案 0 :(得分:2)

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