首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何解决C#异常:必须先将当前线程设置为单线程单元(STA)模式,然后才能进行OLE调用,请确保你Main函数已在其上标记了STAThreadAttribute

(STA)模式, 然后才能进行OLE调用。...异常示例 在我们项目中, 我们使用CefSharp库, 该库允许我们使用HTML, CSS和JavaScript创建桌面应用程序。功能之一是可以将C#类暴露给窗口中JavaScript对象。...上下文(CefSharp线程)执行该函数, 则将触发异常, 因为我们正在CefSharp默认Apartment State内部运行代码。...在我们例子中, 使用CefSharp中注册类启动OpenFileDialog方法, 如果在不更改线程单元状态情况下运行代码, 将引发异常。...如果你不控制线程创建(例如CefSharp), 则以下解决方案是最佳解决方案, 你可以创建一个临时线程并在其中运行代码: using System.Threading; string selectedPath

2.1K10

CefSharp中文帮助文档「建议收藏」

要禁用日志记录更改settings.LogSeverity,并更改文件名/路径,请使用settings.LogFile。 调试问题时,首先要检查地方是日志文件,因为包含低级Chromium消息。...版本开始,51.0.0可以提供自己自定义BrowserSubProcess,因为可执行文件现在是基础VC++实现非常简单包装。...在全局上下文(window对象属性)中创建对象。如果调用CefSharp.BindObjectAsync没有任何参数,则所有已注册对象都将被绑定。名称绑定是更具描述性选项。...您可以使用WPF控件作为开始示例,因为使用相同方法(添加调试以查看所需事件顺序)。按键和鼠标的点击/移动通常由多个部件,up/down与许多其它可能组合。...WPF屏幕版本(虚拟)开始没有内置支持,版本开始,73新VirtualKeyboardRequested事件现在会在您应用程序应显示虚拟键盘时提供通知。

12K31
您找到你想要的搜索结果了吗?
是的
没有找到

将浏览器嵌入 .NET 应用程序中:DotNetBrowser 还是 CefSharp

不需要在主 UI 线程上执行操作——即使在工作线程中也可以执行操作。 您可以同时初始化和使用具有不同配置多个 Chromium 引擎,这在 CefSharp 中是不可能。...方法通用版本可用于显式指定预期返回类型: 这里主要区别是可以将 JavaScript 对象表示为IJsObject。使用接口,您可以访问和修改 JavaScript 对象属性并调用其方法。...JavaScript调用.NET CefSharp 和 DotNetBrowser 都可以使网页上 JavaScript 可以访问 .NET 对象,但是,CefSharp 存在一些特定限制。...另外,CefSharp 只支持调用注入对象方法。如果需要设置属性,则必须修改类并创建 Get/Set 方法。...System.Drawing 中类型,因为限制[19],因此,提供了自己类型。

30140

将浏览器嵌入 .NET 应用程序中:DotNetBrowser 还是 CefSharp

架构 在 CefSharp 中,Chromium 引擎直接在您 .NET 进程中初始化[4]。初始化和关闭都必须在主应用程序线程(通常是 UI 线程)中执行。在不同线程调用它们通常会导致冻结。...不需要在主 UI 线程上执行操作——即使在工作线程中也可以执行操作。 您可以同时初始化和使用具有不同配置多个 Chromium 引擎,这在 CefSharp 中是不可能。...使用接口,您可以访问和修改 JavaScript 对象属性并调用其方法。在 .NET 端对 IJsObject 所做所有更改都将立即反映在 JavaScript 端。...JavaScript调用.NET CefSharp 和 DotNetBrowser 都可以使网页上 JavaScript 可以访问 .NET 对象,但是,CefSharp 存在一些特定限制。...DotNetBrowser DLL 不使用 System.Drawing 中类型,因为限制[18],因此,提供了自己类型。

39220

使用CefSharp开发一个12306“安心刷票弹窗通知”工具

之前抢票工具是基于IEBrowser控件做,不用说大家都知道这个控件在不同Windows系统上表现各异,因为主要依赖于IE内核,坑爹是它有时候还没有直接使用IE效果好,所以使用我这个抢票工具总有不顺收地方...JS无法调用VB.NET写方法,而去可以在X64模式下调用C#方法。....NET对象方法 MyNotify() 了。...-- 应用程序设计使用所有 Windows 版本列表。 Windows 将会自动选择最兼容环境。--> <!...”异常 推测是CefSharp控件这些事件可能不一定运行在UI线程,在非UI线程启动定时器那么定时器“定时事件”也不在UI线程了,所以报错。

3.1K100

C#开发BIMFACE系列52 CS客户端集成BIMFACE应用技术方案

只支持单线程模式,大部分对其操作必须在创建线程中执行,不可以在其它线程调用其方法或属性。 性能相对较弱。...CefSharp【推荐】   CefSharp是一种将功能齐全符合标准web浏览器嵌入C#或VB.NET应用程序简单方法。...CefSharp拥有WinForms和WPF应用程序浏览器控件,以及自动化项目的OffScreen版本。...CefSharp中文帮助文档,请点击查看 免费、开源:https://github.com/cefsharp/CefSharp 支持JS、C#、WinForm窗体之间相互通讯与调用。...而CEFSharpNuget上下载Runtime耗时较长。 WebView2 Runtime 一次安装,可以所有程序共享,并且还支持独立自动升级,而CEFSharp每个程序都需要下载。

4.6K10

.NET周刊【1月第3期 2024-01-24】

NuGet.Server 3.0.0开始,推送包URL为http:///nuget。...文章首先定义了进程对象字段和数据类型,然后通过位域技术减小数据包大小。通过创建C#类SystemProcess,文章展示了如何将进程信息转换为二进制格式,以便网络传输。...深度解析C#数组对象池ArrayPool底层原理 https://www.cnblogs.com/pengze0902/p/17951360 本文讲述了.NET中池化技术,包括连接池、线程池、对象池...特别强调了ArrayPool作用,通过管理数组重用减少垃圾回收压力和内存碎片,尤其适用于高性能应用和多线程环境。...活动 在午休期间使用 C# 从头开始创建 Blazor WebAssembly Web 应用程序 (2024/02/09 12:00~) https://msdevjp.connpass.com/event

13110

Python中threading模块

如果未通过threading模块创建调用控制 线程,则返回具有有限功能虚拟线程对象。在2.6版中更改:添加了current_thread()拼写。...创建线程对象后,必须通过调用线程start()方法启动其活动。这将run()在单独控制线程调用该方法。一旦线程活动开始线程就被认为是“活着”。...安排run()在单独控制线程调用对象方法。方法将RuntimeError在同一个线程对象上多次调用if。run() 表示线程活动方法。您可以在子类中重写方法。...在不带参数情况下调用:如果线程拥有锁,则将递归级别递增1,并立即返回。否则,如果另一个线程拥有该锁,则阻塞直到锁被解锁。锁解锁后(不属于任何线程),然后获取所有权,将递归级别设置为1,然后返回。...仅在调用线程拥有锁时调用方法。RuntimeError如果在锁定解锁时调用方法,则引发A.没有回报价值。条件对象条件变量总是与某种锁相关联; 这可以传入,或者默认创建一个。

2K20

如何在.NET应用程序中分析CPU使用率过高问题

15.应用程序池列表中选择您应用程序池。 16.点击OK。 17.点击Next。 18.Next再点击一次。 19.如果需要,请输入规则名称,并记下转储保存位置。 您可以根据需要更改位置。...根据.NET C#规范: 使用static[6]修饰符声明一个静态成员,该成员属于类型本身而不是特定对象。...即使没有创建该类实例,该静态成员也可以在该类上调用。始终通过类名称而不是实例名称访问静态成员。无论创建多少个类实例,静态成员只有一个副本。...静态方法和属性无法访问其包含类型非静态字段和事件,并且除非在方法参数中显式传递了实例变量,否则它们无法访问任何对象实例变量。 这意味着静态成员属于类型本身,而不是对象。...鉴于Web环境是多线程环境,因为每个请求都是由w3wp.exe进程产生线程;考虑到静态成员是该过程一部分,我们可能会遇到以下情况:几个不同线程尝试访问静态(由多个线程共享)变量数据,这最终可能会导致多线程问题

2.4K30

C# WPF 嵌入网页版WebGL油田三维可视化监控 0x00 楔子0x01 寂静无声0x02 初步尝试0x03 CefSharp现身0x04

毕竟我们主要做JavaScript前端开发,对于C# 之类接触很少。 抱着试一试态度在开发群里面问了下,有人懂WPF开发吗? 寂静无声。。。 因为基本上专业在前端开发,可以理解。...开始以为是因为使用了IE内核原因,后来切换到chrome内核,发现还是不行。 初步尝试 宣告失败。。。...如果你不做C#开发。那么你可以这么理解NuGet: 如果你了解python,那么类似pip。 如果你了解nodejs,那么类似npm。 如果你了解ruby,那么类似gem。...如果你了解java,那么类似maven。 在创建wpf项目的解决方案上面点击右键,可以发现NuGet管理: ?...ChromiumWebBrowser对象,在创建时候,传入我们三维应用地址;之后把该对象加入到Wpf界面中即可。

2.9K30

最大限度地降低多线程 C# 代码复杂性

另一个角度来说,不一定是关乎可以编码什么,而是关乎可以选择不编码什么,因为你希望通过间断代码行产生一点奇迹。...同步挑战 在多线程编程方面遇到第一个问题是,同步对共享资源访问权限。当两个或多个线程共享对某个对象访问权限且可能同时尝试修改对象时,就会出现这个问题。...,无论有多少线程在执行 Foo 方法,只要执行另一个 Read 或 Write 方法,就不会调用 Write 方法。...除非为每个检索方法都创建一个线程,否则代码运行速度比预期慢得多:99% 所有执行时间可能会花在等待 HTTP 请求返回上。 在一个线程上运行代码效率很低,并且线程创建语法非常容易出错。...随着你支持多个线程及其助理对象,挑战变得更严峻,开发人员不得不在编写代码时使用重复代码。意识到可以创建委托集合和用于包装这些委托类后,便能使用一个方法调用创建所有线程

14130

.NET桌面程序集成Web网页开发十种解决方案

只支持单线程模式,大部分对其操作必须在创建线程中执行,不可以在其它线程调用其方法或属性。 性能相对较弱。...下图是在Winform程序中使用WebView2组件加载我博客园页面的效果 控件4:CefSharp   CefSharp是一种将功能齐全符合标准web浏览器嵌入C#或VB.NET应用程序简单方法...CefSharp拥有WinForms和WPF应用程序浏览器控件,以及自动化项目的OffScreen版本。...CefSharp中文帮助文档,请点击查看 免费、开源:https://github.com/cefsharp/CefSharp 支持JS、C#、WinForm窗体之间相互通讯与调用。...它是用C#写成,里面有大量C#注释,geckofx是最完美的默认iE核心webbrowse控件替代控件。

2.7K11

C#扫描器编写各种问题荟萃

最近在写一款基于C#网站备份文件扫描器,第一次写C#程序,其中遇到各种问题。在这里荟萃一下,给其他朋友一些帮助。     先秀一下效果: ?...问题一、多线程中修改UI抛出异常     一般异常信息是“现场间操作无效”、“调用线程无法访问对象因为另一个线程拥有对象”。...唉,线程找不到对象,就跟我情人节没有对象,在这里写程序一个道理……苦逼。     我们需要使用“委托”方式,委托UI线程来处理操作UI那个函数。...这个时候“增加”这部分代码就需要写在单独一个方法中,然后由工作线程委托UI线程来执行这个方法。    ...在listbox属性中,有一项叫“ContextMenu”,我们添加,即可为listbox增加一个右键菜单。     但如何向菜单中增加项目?

85451

10个最难回答Java面试题

字符串在 Java 中是不可变,这点也是和C#设计类似,因为 String 对象缓存在 String 池中。...简而言之,因为 String 是不可变,所以没有人可以在创建更改其内容,这保证了 String hashCode 在多次调用时是相同。... Java 5 开始,使用 Enum 创建线程安全Singleton很容易。但如果面试官坚持双重检查锁定,那么你必须为他们编写代码。记得使用volatile变量。...图精确演示了我们程序, 其中一个线程在一个对象上持有锁, 并等待其他线程持有的其他对象锁。...调用notify() 或 notifyAll() 方法向单个或多个线程发出一个条件已更改通知,并且一旦通知线程离开 synchronized 块,正在等待所有线程开始获取正在等待对象锁定,幸运线程在重新获取锁之后

78220

CefSharp基于.Net Framework 4.0 框架编译

开始 建立一个名为CefSharp-DotNet4.0解决方案(下文简称sln哈),咱们就开始吧!...(TypeInfo)Type中抽离,所以4.0种Type并没有GetTypeInfo方法 解决办法:4.0访问TypeBaseType、IsGenericType等属性,直接Type对象调用即可...由于使用了程序集统一方式,解决方案中所有工程都必须引用这三个库。 C#发展至今,已经最初1.0到了5.0版本: 1.0版本 - 基本C#语法。...CefSharp.Core CefSharp.Core是一个C库,但是由于该C库里面调用了一些C#代码,所以跟.Net Framework版本出现了相关性。...完成操作后,直接进行Rebuild操作,因为该C++库并不涉及到C#代码,所以只需要做上述增加Bcl库相关操作,编译成功!

24410

Cefsharp_ceph nfs

在JS中调用C#方法 0. 简介 CefSharp,简单来说就是一款.Net编写浏览器包,方便你在Winform和WPF中内嵌Chrome浏览器组件。支持HTML5。...CefSharp功能比较复杂,以下只介绍一些我觉得比较重要并且目前经常用功能。 1....理论上来说使用x86或者x64平台都行,但由于之后要使用编译好支持h264x86内核,因此此处选择x86平台; 在 Form1.cs 中添加如下代码; using CefSharp; using...在JS中调用C#方法 在C#中编写如下代码:(注意中文注释部分) 以下是同步执行演示,即JS会阻塞等待C#执行完再继续执行。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.5K10

Java 中文官方教程 2022 版(九)

WatchDir – 演示了监视目录中已创建、删除或修改文件机制。使用-r选项调用程序会监视整个树更改。有关文件通知服务更多信息,请参见监视目录更改。...如果线程频繁调用抛出InterruptedException方法,只需在捕获异常后run方法返回。...同步构造函数没有意义,因为只有创建对象线程在构造对象时应该访问。 警告: 在构建一个将在多个线程之间共享对象时,一定要非常小心,确保对象引用不会过早“泄漏”。...你必须绝对确定交错访问受影响字段是安全。 可重入同步 请记住,一个线程不能获取另一个线程拥有的锁。但一个线程可以获取已经拥有的锁。允许一个线程多次获取相同锁使可重入同步成为可能。...假设d是我们用来调用wait对象。当一个线程调用d.wait时,必须拥有d内在锁,否则会抛出错误。在同步方法中调用wait是获取内在锁简单方法。 当调用wait时,线程释放锁并暂停执行。

3100
领券