Mono Gtk.RecentManager:列出项目的方法
我想列出我所有“最近使用”的物品。 我使用以下代码:Mono Gtk.RecentManager:列出项目的方法,mono,gtk#,Mono,Gtk#,我想列出我所有“最近使用”的物品。 我使用以下代码: public static void Main(string[] args) { Application.Init (); RecentManager rm = RecentManager.Default; GLib.List items = rm.Items; Console.WriteLine(items.Count+" items."); foreach(object item in items)
public static void Main(string[] args)
{
Application.Init ();
RecentManager rm = RecentManager.Default;
GLib.List items = rm.Items;
Console.WriteLine(items.Count+" items.");
foreach(object item in items)
{
Console.WriteLine(item.ToString());
}
Console.WriteLine("Done.");
Console.ReadKey();
}
如果项目列表为空,则所有项目均按预期工作。但是,如果RecentManager实际上包含项目,我会得到:
3 items.
Stacktrace:
at (wrapper managed-to-native) GLib.Object.gtksharp_is_object (intptr) <0x00070>
at (wrapper managed-to-native) GLib.Object.gtksharp_is_object (intptr) <0xffffffff>
at GLib.Object.IsObject (intptr) <0x00013>
at GLib.ListBase.DataMarshal (intptr) <0x003ff>
at GLib.ListBase/ListEnumerator.get_Current () <0x0004b>
at ruCmd.MainClass.Main (string[]) [0x00038] in /home/nils/Projekte/RecentlyUsed/ruCmd/Main.cs:14
at (wrapper runtime-invoke) ruCmd.MainClass.runtime_invoke_void_object (object,intptr,intptr,intptr) <0xffffffff>
Native stacktrace:
/usr/bin/mono [0x480c90]
/usr/bin/mono [0x4b004d]
/lib/libpthread.so.0 [0x7fad5b7c85a0]
/usr/lib/libgobject-2.0.so.0(g_type_check_instance_is_a+0x53) [0x7fad55c642e3]
[0x41d48b00]
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
3项。
堆栈跟踪:
at(包装器管理为本机)GLib.Object.gtksharp_是_对象(intptr)
at(包装器管理为本机)GLib.Object.gtksharp_是_对象(intptr)
at GLib.Object.IsObject(intptr)
位于GLib.ListBase.datamarshall(intptr)
在GLib.ListBase/ListEnumerator.get_Current()处
在/home/nils/Projekte/RecentlyUsed/ruCmd/Main.cs:14中的ruCmd.MainClass.Main(字符串[])[0x00038]处
在(包装器运行时调用)ruCmd.MainClass.runtime_invoke_void_对象(对象、intptr、intptr、intptr)
本机堆栈跟踪:
/usr/bin/mono[0x480c90]
/usr/bin/mono[0x4b004d]
/lib/libpthread.so.0[0x7fad5b7c85a0]
/usr/lib/libgobject-2.0.so.0(g_type_check_instance_is_a+0x53)[0x7fad55c642e3]
[0x41d48b00]
=================================================================
在执行本机代码时收到SIGSEGV。这通常表明
mono运行时或某个本机库中出现致命错误
由您的应用程序使用。
=================================================================
我处理Gtk#/GLib时有错误吗?
我已经重建了我的mono环境。邮件列表:这是一个解决方案,但存在一个变通方法。以下代码起作用:
public static void Main(string[] args)
{
Application.Init ();
RecentManager rm = RecentManager.Default;
GLib.List items = new GLib.List(rm.Items.Handle, typeof(RecentInfo), true, true);
Console.WriteLine(items.Count+" items.");
foreach(RecentInfo item in items)
{
Console.WriteLine(item.DisplayName);
}
Console.WriteLine("Done.");
Console.ReadKey();
}