Mono 手动泵送gtk#事件循环时调度空闲事件

Mono 手动泵送gtk#事件循环时调度空闲事件,mono,gtk,wxwidgets,gtk#,Mono,Gtk,Wxwidgets,Gtk#,我开发了一个用C++/wxWidgets编写的应用程序,它有一个用于脚本和插件的嵌入式.NET运行时 我希望使用gtk作为插件GUI,但是由于gtk事件循环尚未启动,GUI没有响应(这是windows上的wxWidgets,因此它不使用gtk作为后端) 这可以通过在wxWidgets空闲处理期间泵送事件循环来解决: public void OnWxWidgetsIdle() { while(Gtk.Application.EventsPending()) Gtk.Appl

我开发了一个用C++/wxWidgets编写的应用程序,它有一个用于脚本和插件的嵌入式.NET运行时

我希望使用gtk作为插件GUI,但是由于gtk事件循环尚未启动,GUI没有响应(这是windows上的wxWidgets,因此它不使用gtk作为后端)

这可以通过在wxWidgets空闲处理期间泵送事件循环来解决:

public void OnWxWidgetsIdle()
{
    while(Gtk.Application.EventsPending())
        Gtk.Application.RunIteration();
}
但是,这似乎不会触发gtk空闲事件,因此依赖于空闲事件的GUI小部件(如文本框中闪烁的光标)不会正确更新

有人知道我如何强制发送gtk空闲事件,或任何其他解决此问题的替代方案吗

亲切问候,


Andrew Ward.

在单侧使用空闲处理器:

void Start ()
    {
    GLib.Idle.Add (new IdleHandler (OnIdleCreateThumbnail));
    }

bool OnIdleCreateThumbnail ()
    {
    Image img = GetNextImage ();

    // If no more images remain, stop the idle handler.
    if (img == null)
       return false; 

    CreateThumbnail (img, img.ToString () + ".thumbnail");

    // There are more images, invoke this routine again on the next Idle moment.
    return true;           
    }
参考资料


在单侧使用空闲处理器:

void Start ()
    {
    GLib.Idle.Add (new IdleHandler (OnIdleCreateThumbnail));
    }

bool OnIdleCreateThumbnail ()
    {
    Image img = GetNextImage ();

    // If no more images remain, stop the idle handler.
    if (img == null)
       return false; 

    CreateThumbnail (img, img.ToString () + ".thumbnail");

    // There are more images, invoke this routine again on the next Idle moment.
    return true;           
    }
参考资料