Mono 手动泵送gtk#事件循环时调度空闲事件
我开发了一个用C++/wxWidgets编写的应用程序,它有一个用于脚本和插件的嵌入式.NET运行时 我希望使用gtk作为插件GUI,但是由于gtk事件循环尚未启动,GUI没有响应(这是windows上的wxWidgets,因此它不使用gtk作为后端) 这可以通过在wxWidgets空闲处理期间泵送事件循环来解决: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
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;
}
参考资料