我可以在我的网络应用程序中使用Awesomeium吗?我正在尝试呈现html代码,将其导出为图像,然后使用该图像将其放入pdf文档中。我正在开发一个asp.net/C#web应用程序。我遇到的问题是,当我不止一次这样做时,它会给我这个错误:您正在尝试重新初始化WebCore。WebCore每个进程只能初始化一次,并且只有在进程退出时才必须关闭。这是我的代码:WebCore.Initialize(newWebConfig(),false);使用(WebViewwebView=WebCore.CreateWebView((pdfWidth-80).ToString().ToInt()+20,(pdfHeight/2).ToString().ToInt()+20)){webView.LoadHTML(html);while(webView.IsLoading||!webView.IsDocumentReady)WebCore.Update();线程.睡眠(1100);WebCore.Update();stringfileName=Server.MapPath("result."+DateTime.Now.Second.ToString()+DateTime.Now.Minute.ToString()+DateTime.Now.Hour.ToString()+DateTime.Now.Millisecond.ToString()+".png");BitmapSurface表面=(BitmapSurface)webView.Surface;surface.SaveToPNG(文件名,真);WebCore.Shutdown();我想我不能在每次呈现网页时都初始化WebCore,所以我把它放在Global.asax中。这样做之后,当我调试时,我得到另一个错误:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。当前线程当前未运行代码或无法获取调用堆栈。我有什么想法可以做到这一点?谢谢简短的回答:是的,你可以。但根据WebCore文档:请注意Awesomium和Awesomium.NET不是线程安全的。所有API成员都应从初始化WebCore的线程调用(请参阅Initialize(WebConfig))或创建第一个WebView、WebSession或技术特定的WebControl。另请参阅WebCore.Update()方法描述的异常部分:System.AccessViolationException-您试图从创建WebCore的线程以外的线程访问此成员。因此,考虑到Web应用程序中的每个请求通常在不同的线程中处理,AccessViolationException是一个记录在案的功能。因此,您的任务是保证所有Awesomium调用都将在一个特殊的专用线程中处理。线程应该在应用程序级别运行,并且必须在请求之间共享它们的访问权限。从技术上讲,您需要编写一种消息循环或同步上下文,在其中使用Awesomium代码推送委托、Action或Func,以仅在此线程中提供其执行。可能您需要调用webview.invoke或webview.begininvoke并且您需要创建一个委托来访问在另一个线程中的webcore.initialize之前创建的webview,我会使用单例模式来使用相同的webview实例。以上是C#学习教程:CanIuseAwesomeiuminawebapplication?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
