标签: message-pump

Python - pythoncom.PumpMessages()

我很惊讶地看到没有很多关于函数pythoncom.PumpMessages()pythoncom模块的解释文档。

那么做什么pythoncom.PumpMessages()pythoncom.PumpWaitingMessages()做什么以及如何做?我真正了解它用于从输入设备捕获事件。

python message-pump pythoncom

6
推荐指数
1
解决办法
9782
查看次数

ShowDialog方法挂起而没有显示窗口??死锁?

我们有一个WPF忙窗口指示器。它在主线程上使用表示window.ShowDialog()。响应Loaded事件后,将执行操作并关闭窗口,以便应用程序继续其工作。

window.ShowDialog()似乎从时间而不显示对话框,Loaded事件不会触发这样的应用程序挂起挂时间(很少)。相关代码如下:

private void BusyIndicatorAsyncCall(string text, Action<DoWorkEventArgs> doWorkDinamicView = null, Action doWork = null, Action workCompleted = null, Action<Exception> exceptionReturn = null)
{
    Window window = this.CreateWindowOfBusyIndicator(text);
    Dispatcher dispatcher = window.Dispatcher;
    BackgroundWorker backgoundworker = new BackgroundWorker();
    IViewModel viewModel = (window.Content as UserControl).DataContext as IViewModel;

    this.Modals.Add(viewModel, window);
    if (doWorkDinamicView != null)
    {
        DoWorkEventArgs eventArgs = new DoWorkEventArgs(window.Content);
        backgoundworker.DoWork += (s, e) => doWorkDinamicView.Invoke(eventArgs);
    }
    else if (doWork != null)
    {
        backgoundworker.DoWork += (s, e) => { doWork.Invoke(); …
Run Code Online (Sandbox Code Playgroud)

.net wpf message-pump hang showdialog

5
推荐指数
1
解决办法
1865
查看次数

Visual Basic.NET:如何创建线程来更新 UI

处理计算量大的任务的常用 VB 方法是将其放入后台工作线程,而主线程继续处理 UI。

不管出于什么原因,我需要以相反的方式执行此操作:主线程执行繁重的工作,后台线程更新 UI。

这是我到目前为止所拥有的。唯一的问题是,虽然 UI 窗口 (Form1) 确实被重绘,但您无法与其交互,甚至无法移动它或调整其大小(鼠标光标变成沙漏状并且无法单击)。

Public Class ProgressDisplay

Private trd As Thread

    Public Sub New()
        trd = New Thread(AddressOf threadtask)
        trd.Start()
    End Sub

    Private Sub threadtask()
        Dim f1 As Form1
        f1 = New Form1
        f1.Show()
        Do
            f1.Update()
            Thread.Sleep(100)
        Loop
    End Sub

End Class
Run Code Online (Sandbox Code Playgroud)

编辑:理想情况下,我需要向客户端呈现这样的界面

Public Class ProgressDisplay
    Public Sub New()
    Public Sub Update(byval progress as int)
End Class
Run Code Online (Sandbox Code Playgroud)

客户端将像这样调用它(实际上是在 COM 上的非托管 c++ 中,但你明白了):

Dim prog = new ProgressDisplay()
DoLotsOfWork(addressof prog.update) ' DoLotsOfWork method takes …
Run Code Online (Sandbox Code Playgroud)

vb.net multithreading message-pump ui-thread applicationcontext

4
推荐指数
1
解决办法
2万
查看次数

结束程序中期运行

pythoncom.PumpMessages()

根据我的理解,这条线基本上告诉程序永远等待.为了我的目的,它似乎工作.但是,我希望能够在给定正确刺激的情况下结束该计划.如何结束上述行,或停止程序进一步运行.

python exit message-pump pythoncom

2
推荐指数
2
解决办法
5219
查看次数