MonoMac在后台线程中创建上下文

时间:2013-11-05 17:53:37

标签: objective-c macos cocoa monomac

这是我得到的错误:

MonoMac.AppKit.AppKitThreadAccessException:AppKit一致性错误:您正在调用只能从UI线程调用的方法。

我想按照in the apple documentation图14-1所示布置我的程序。

enter image description here

The following stack-overflow question seems to suggest this can be achieved in cocoa

文档似乎表明多个gl上下文是完全合理的,所以我猜测至少其中一些必须存在于主UI线程之外。

我在猜this could well be the problem。但是,我想确保单独线程中的nsglcontext没有隐含的危险,并且只需遵循使用多线程opengl程序时常用的预防措施。

任何帮助都会使我的桌子不再受到抨击,因此非常感谢。

1 个答案:

答案 0 :(得分:2)

正如问题中的博客文章链接所示,您可以使用以下内容来转换交叉线程ui检查。

//
// Disable UIKit thread checks for a couple of methods
//
var previous = UIApplication.CheckForIllegalCrossThreadCalls;
UIApplication.CheckForIllegalCrossThreadCall = false;

// Perform some UIKit calls here
foo.Bar = 1;

// Restore
UIApplication.CheckForIllegalCrossThreadCalls = previous;

请注意,如果你做错了,这也会隐藏问题,所以请谨慎使用。