Mono.Cairo Homepage says“不要尝试在主(Gdk)线程以外的线程中使用Cairo。”
这似乎意味着在多个线程中使用Cairo存在问题,例如在ASP.NET应用程序中。
我想知道只要没有涉及共享数据,Cairo和Mono.Cairo是否可以安全地同时从多个线程使用。 (每个线程都有自己的上下文/表面等)。
如果有全局锁定,我也想了解这一点。 (例如,System.Drawing.Graphics.DrawImage()在许多版本的Windows上是进程范围的独占权。)
我发现this bug可能相关或不相关。
答案 0 :(得分:1)
ASP.NET和Gdk完全不相关。前者处理HTTP,后者处理屏幕和本机工具包(X11,Wayland等)。
您在Mono.Cairo主页中看到的限制与任何Gtk应用程序相同:请勿触摸错误线程中的UI。在调试模式下运行时发现这种错误操作的方便工具是gui-thread-check(现在在Gtk-Sharp3中bundled by default)。