message-pump

    1热度

    1回答

    当我运行我的程序(下面的代码)并通过USB电缆插入硬盘驱动器时,WindowProcedure被称为WM_DEVICECHANGE消息,用于设备更改事件类型DBT_DEVICEARRIVAL。 但是,GetMessage不返回。 的documentation for GetMessage说GetMessage 检索从调用线程的消息队列中的消息。 因此,听起来好像线程的消息队列中没有消息。 为什么我

    3热度

    1回答

    我似乎无法在任何地方找到答案。我不确定我是否知道如何说出它。 不要注定消息控件上的表单处理中彼此平行? 我一直的印象是,我们有每个线程的公寓一个消息泵下,和一个泵会养活连接到该线程整个GUI。所以,如果你在一个控件上挂接了wndproc并冻结了线程(Thread.Sleep()),整个窗体就会冻结? 如果是这样,会出现this question通过当在子控制的特定消息到达睡觉来证明,相邻的控制处理

    0热度

    1回答

    我有一个应用程序从API异步接收事件,并可以在此API上同步调用方法。 为了线程安全的目的,我需要每个同步函数和应用程序中的每个事件处理程序都被锁定。 然而,调用API方法同步可能导致的API,以提高在不同的线程事件,等待他们返回之前进行处理。 因此,这可能会导致死锁的API将等待要处理的事件继续,但在我的课同步对象将由两个不同的线程被击中,程序会挂起。 我的当前的想法是,而不是锁定的事件处理程序

    0热度

    2回答

    所以我一直在阅读Win32消息泵,并且我很好奇DispatchMessage()函数是处理整个消息队列还是只处理队列顶部的消息? 例如,我已经看到环路如: while(true) { MSG msg; if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT)

    1热度

    3回答

    如何在等待COM事件完成时阻止UI线程。我订阅更新事件的COM事件已完成信号。 MyRData.OnUpdate += OnUpdate; 我没有自己的COM代码,无法对其进行更改。 我试过AutoResetEvent,但阻止UI线程,我不接受来自COM的更新。

    1热度

    1回答

    我正要将child window附加到外部应用程序。子窗口将是一个无模式的对话框。由于我不拥有外部应用程序的源代码(实际上是Microsoft FSX),我不知道如何挂钩到消息循环或父窗口本身的回调LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM)。 我的附加应用程序运行在它自己的进程中,所以我需要编写自己的消息循环,还是我的回调会由父消息泵调

    0热度

    1回答

    我指的是msdn文章“在MFC对话框中托管Windows窗体用户控件”[0123](http://msdn.microsoft.com/en-us/library/94t3ebxz.aspx),以便重用Windows在MFC遗留应用程序中形成用户控件。使用花哨的DDX_ManagedControl工具,我可以看到嵌入到对话框中的控件(MyPanel类),甚至可以使用100%的制表符。 然后我继续让

    0热度

    1回答

    这涉及到这样一个问题: How to create custom message pump? 我基本上需要相同的消息泵,但它也需要能够支持输入参数。上述问题的答案仅支持Action()委托,它们不接受参数。我希望能够将参数传递给我的操作。这里是无参数版本: public class MessagePump { private BlockingCollection<Action> act

    4热度

    3回答

    我们有一个WPF繁忙窗口指示器。它在主线上使用window.ShowDialog()显示。响应Loaded事件时,将执行一个操作,并关闭该窗口,以便应用程序继续其工作。 window.ShowDialog()似乎不时地(很少)挂起而没有显示对话框,并且Loaded事件未被触发,因此应用程序挂起。相关的代码是下列之一: private void BusyIndicatorAsyncCall(stri

    2热度

    3回答

    处理计算繁重任务的常用VB方法是将其放入后台工作线程中,而主线程则继续处理UI。 说不管出于什么原因,我需要以相反的方式做到这一点:主线程做了咕噜的工作,更新了UI的背景。 这是我到目前为止。唯一的问题是,当UI窗口(Form1)被重绘时,你不能与它交互,甚至不会移动或调整它的大小(鼠标光标变成沙漏而不会点击)。 Public Class ProgressDisplay Private trd