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

C#异常调用OLE之前,必须将当前线程设置为单线程单单元(STA)模式。

问题来源: 昨晚上调试数据库大作业的时候,我注册界面Register里点击"上传头像"这个linklabel,程序出现了一个异常调用OLE之前,必须将当前线程设置为单线程单单元(STA)模式。...异常处理: 链接1:可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式 链接2:可以调用OLE之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute...private void PictureBox_Click(object sender, EventArgs e) { //错误内容: 可以调用OLE之前,必须将当前线程设置为单线程单元(STA...这样改了之后出现了一个新的bug:只要我一直点"上传头像"这个linkliable,它就会一直弹出对话框让我选择图片,我点了三下"上传头像",效果如图所示。...这不是我想要的结果,按理来说,我们只能允许它出现一个"选择头像"的对话框。 ?

4.2K20

引脚数据提示编辑代码并继续调试(C#,VB,C ++)编辑XAML代码并继续调试调试难以重现的问题配置数据以显示调试器更改执行流程跟踪范围外的对象(C#,Visual Basic)查看函数的返回值

配置数据以显示调试器 对于C#,Visual Basic和C ++(仅C ++ / CLI代码),您可以使用DebuggerDisplay属性告诉调试器显示哪些信息。...查看函数的返回值 要为您的功能,看看出现在该功能查看返回值的汽车窗口,而你是单步执行代码。要查看某个函数的返回值,请确保您感兴趣的函数已经执行(如果您当前函数调用停止,请按一次F10键)。...您还可以通过配置“异常设置”对话框的选项,将调试器配置为闯入处理异常的代码。通过选择“调试”>“ Windows”>“异常设置”打开此对话框。...调试死锁和竞争条件 如果您需要调试多线程应用程序常见的问题,则通常有助于调试查看线程的位置。您可以使用在源代码显示线程按钮轻松完成此操作。...源代码显示线程 调试,单击“调试”工具栏的“显示线程”按钮。 查看窗口左侧的装订线。在此行上,您看到一个类似于两个布料线程线程标记图标 。线程标记指示线程在此位置停止。

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

Visual Studio 调试系列9 调试器提示和技巧

04 配置要在调试器显示的数据 有关C#,Visual Basic 和C++(C++仅 /CLI 代码),可以让调试程序要使用下列选项显示的信息DebuggerDisplay属性。...07 查看函数的返回值 要查看函数的返回值,请在逐步执行代码,查看自动窗口中显示的函数。 要查看函数的返回值,请确保你关注的函数已执行完毕(如果函数的调用目前处于停止状态,请按一下 F10 键)。...可以将调试器配置为已处理的异常处中断代码,方法是配置异常设置对话框的选项。 要打开这个对话框,请选择调试 > 窗口 > 异常设置。 通过异常设置对话框,你可以让调试器特定异常处中断代码。...有关详细信息,请参阅管理异常。 ? 10 调试死锁和争用条件 如果需要调试的问题对于多线程应用程序很常见,调试查看线程的位置,通常会有所帮助。 可使用源显示线程按钮轻松完成此操作。 ?...源代码显示线程 调试,单击源显示线程按钮 ? 调试工具栏。 查看窗口左侧的滚动条。 在这一行,你可以看到线程标记图标 ? ,类似于两根细线。线程标记指示线程在此位置停止。

3.1K10

C#基础知识学习之 ☀️ | 多线程的使用基础

C#线程线程概念 线程程序中经常被用到,现在的计算机都是可以异步执行很多操作的,所以多线程的作用可见一斑! 线程 被定义为程序的执行路径。每个线程都定义了一个独特的控制流。...不可运行状态:下面的几种情况下线程是不可运行的: 已经调用 Sleep 方法 已经调用 Wait 方法 通过 I/O 操作阻塞 死亡状态:当线程已完成执行或已中止的状况。...主线程 C# ,System.Threading.Thread 类用于线程的工作。它允许创建并访问多线程应用程序的单个线程。进程第一个被执行的线程称为主线程。...4 public static void BeginCriticalRegion() 通知主机执行将要进入一个代码区域,该代码区域内线程中止或未经处理的异常的影响可能会危害应用程序域中的其他任务。...6 public static void EndCriticalRegion() 通知主机执行将要进入一个代码区域,该代码区域内线程中止或未经处理的异常仅影响当前任务。

55420

C#复习题 单项选择题

C#应用程序,一般程序的开头使用关键字( )来引入命名空间。 A.class B.using C.in D.this 5.  异常处理使用时,一般将可能出现异常的语句放在( )代码块。...OpenFileDialog对话框的哪个属性用于表示对话框显示的初始目录( )。...C#程序,可使用try…catch机制处理程序中出现的( )错误。 A. 语法      B. 运行      C. 逻辑      D. 拼写 35....实例构造函数在生成实例被自动调用 D. 用户可以定义无参数构造函数 72. 如果要在窗体始终显示系统的当前时间,应该使用的控件是( )。 A. CheckBox     B....C#,( )控件是最常用、最简单的文本显示和输入控件,它既可以输出或显示文本信息,也可以接收键盘输入的内容。

4.2K20

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

(STA)模式, 然后才能进行OLE调用。...仅当将调试器附加到进程, 才会引发此异常本文中, 我们将向你简要说明如何防止此异常出现在WinForms项目中。...异常示例 我们的项目中, 我们使用CefSharp库, 该库允许我们使用HTML, CSS和JavaScript创建桌面应用程序。它的功能之一是可以将C#类暴露给窗口中的JavaScript对象。...我们具有以下类, 该类显示用于保存文件的本机对话框(showOpenDialog函数): using System; using CefSharp.WinForms; using System.IO;...我们的例子, 使用从CefSharp中注册的类启动OpenFileDialog的方法, 如果在不更改线程的单元状态的情况下运行代码, 将引发异常

2.1K10

.NET混合开发解决方案4 WebView2的线程模型

填写完审查意见,点击【保存】按钮后,网页js调用C#方法,将对应的模型节点的“蓝色加号”图标,修改为“黄色警告”图标,表示该模型有审查意见。...form.BeginInvoke() 方法获取 创建控件(WebView2)的基础句柄所在的线程(主线程,UI线程),然后异步执行委托,委托调用窗体的业务方法实现审查意见列表的更新与节点图标的更换。...string msg = e.TryGetWebMessageAsString(); if (msg == "Open Dialog") { // 在当前事件处理程序完成后显示一个模式对话框...C#语言中的延迟    C# 中使用 Deferral ,最佳做法是将其与using块一起使用。 即使using块中间引发异常,该using块也可确保Deferral已完成。 ...例如,不要执行以下操作,因为如果在调用 Complete之前出现异常, WebResourceRequested 则事件不会被视为“已处理”,并阻止 WebView2 呈现该 Web 内容。

3.1K30

【团队分享】刀锋铁骑:常见Android Native崩溃及错误原因

调用栈:#00是栈顶,#02是栈底,#02调用#01调用#00方法,#00的方法libspirit.so的Spirit类下的testCrash方法,出错的地方是testCrash方法内汇编偏移17(...本文中,SIGSEGV(段错误),SIGBUS(内存访问错误),SIGFPE(算数异常)属于这种信号。 进程调用的库发现错误,给自己发送中止信号,默认情况下,该信号会终止进程。...本文中,SIGABRT(中止进程)属于这种信号。 用户(手贱)或第三方App(恶意)通过kill-信号 pid的方式给错误进程发送,这时signal的si_code会小于0。...解决方法 使用指针前加以判断,如果为空,则是不可访问的。 Bug评述 空指针是很容易出现的一种bug,代码量大,赶开发进度很容易出现,但是它也很容易被发现和修复。 2....这时查看Crash显示调用栈,和野指针所在的代码部分,有可能基本上没有任何关联。 解决方法 指针变量定义,一定要初始化,特别是结构体或类的成员指针变量。

4.1K62

Visual Studio 2008 每日提示(二十八)

#275、从异常助手里检查异常对象 原文链接: You can examine the exception object from the exception assistant 操作步骤: 异常助手对话框...操作步骤: 异常助手对话框,有个“复制异常详情到剪贴板”的链接,单击此链接,可以把异常的详情复制到剪贴板。...评论:复制有关异常的内容,对测试人员记录异常信息很有用。 #277、未处理的异常调用堆栈,做了什么?...如果没有启动该项,意味着不会自动调用堆栈。启用该项,如下所示异常的变量出现在局部变量窗口。 评论:此功能可以很详细查看有关堆栈异常变量。...#290、在生成的时候,优化你的代码 原文链接:How to optimize your code for a build 操作步骤: 针对c#项目属性,选择“生成”标签页选中“优化代码”。

71740

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

问题一、多线程修改UI抛出异常     一般异常信息是“现场间操作无效”、“调用线程无法访问此对象,因为另一个线程拥有该对象”。...比如我们要写一个扫描器,界面上有一个进度条显示扫描的进度,没扫描一个URL我们需要给进度条增加一。...这个时候“增加”这部分代码就需要写在单独的一个方法,然后由工作线程委托UI线程来执行这个方法。    ...listbox的属性,有一项叫“ContextMenu”,我们添加它,即可为listbox增加一个右键菜单。     但如何向菜单增加项目?...什么意思,比如我程序要弹出一个对话框,让用户输入信息。弹出对话框(不管是模态还是非模态)后,居然会在任务栏上有自己的一项: ?

85351

c#实战教程_ps初学者入门视频

C#类析构函数不能显示地被调用,它是被垃圾收集器撤销不被使用的对象自动调用的。...在编译要采用如下格式:csc 要编译的C#源程序 /unsafe。 习题 1. 从键盘输入姓名,显示显示对输入姓名的问候。...接着属性窗口中选中Font属性,单击Font属性右侧的标题为…的按钮,打开对话框,在对话框可以修改Label控件显示字符串的字体名称和字号等,也可以单击Font属性左边的+号,在出现的子属性编辑。...(3) 《StudentI:数据库》对话框,双击《使用设计器创建数据表》,出现《表1:表》对话框可以创建数据库表的字段。...(6) 《StudentI:数据库》对话框左侧,选择对象为:表,右测出现Student表,双击Student表,出现《Student:表》对话框

15.5K10

Visual Studio 调试系列6 监视变量(使用监视窗口和快速监视窗口)

当你进行调试,可以使用 监视窗口 和 快速监视窗口 来监视变量和表达式。 仅在调试会话期间,这两个窗口才可用。 监视窗口可以调试一次显示多个变量。...快速监视对话框一次仅显示单个变量,并可以继续调试之前,必须关闭。...例如,在上述表达式的有拼写错误生成出现此错误监视窗口: ? 监视窗口中可能会显示一个带有两个波浪条纹图标圆圈。 此图标表示调试器会计算该表达式,因为潜在的跨线程依赖关系。...计算代码需要暂时,运行您的应用程序的其他线程,但由于中断模式下,应用程序的所有线程通常已都停止。...允许其他线程暂时运行可能对您的应用程序和调试器的状态的意外的影响可以忽略断点和这些线程上的异常等事件。

2.9K10

TransactionScope 的基本原理简介

C# 的事务编程 1 Db事务 DbConnection 创建基于当前连接的 DbTransaction 2 使用TransactionScope ,创建环境事务 一旦创建,在这个环境包含的...如果连接字符串未指定 Enlist,若在连接打开检测到一个,连接将自动分布式事务登记。...TransactionScope 和 DependentTransaction 跨多个函数调用或多个线程调用需要使用相同的事务的应用程序的类。...未能调用此方法中止事务。 Dispose 方法将标记事务范围的末尾。 调用此方法之后所发生的异常不会影响事务。 Current 内某个范围内,将引发异常 Dispose 调用。...但是,作用域结束,以前的值被还原。Dispose 上 Current 事务范围创建事务,事务将中止范围的末尾。

54010

transactionscope mysql_TransactionScope 的基本原理简介

如果连接字符串未指定 Enlist,若在连接打开检测到一个,连接将自动分布式事务登记。...您还应该使用 TransactionScope 和 DependentTransaction 跨多个函数调用或多个线程调用需要使用相同的事务的应用程序的类。...如果在事务范围内发生异常,参与到其中的事务将回滚。 当您的应用程序完成所有工作它想要在事务执行,应调用 Complete 方法一次,以通知该事务管理器是可接受,即可提交事务。...未能调用此方法中止事务。 调用 Dispose 方法将标记事务范围的末尾。调用此方法之后所发生的异常不会影响事务。 如果您修改的值 Current 内某个范围内,将引发异常 Dispose 调用。...但是,作用域结束,以前的值被还原。此外,如果您调用 Dispose 上 Current 事务范围创建事务,事务将中止范围的末尾。

28210

IDEA Web渲染插件开发(二)— 自定义JsDialog

《IDEA Web渲染插件开发(一)》,我们了解到了如何编写一款用于显示网页的插件,所需要的核心知识点就是IDEA插件开发和JCEF,本文中,我们将继续插件的开发,为该插件的JS Dialog显示进行自定义处理...对GUI的操作,比如修改窗体某个控件的文本或是想要对一个窗体进行模态显示,都需要在窗体GUI主线程进行,否则就会出现GUI的处理异常。...如果直接在加载大数据的线程调用Form.setBigData()(假如有这样一个设置文本的方法),一般来说就会出现异常非GUI线程尝试修改GUI的相关值。...修改线程处理后,让我们再次调用alert: 可以看到对话框已经显示为了使用IDEA插件下的dialog形式,但是这个dialog还不完全正确,一般的alert对话框,只会有一个确认按钮,而IDEA下的...我们定义了一个私有字段JTextField,之所以需要在类持有该引用,是因为我们定义一个方法getText,以便在对话框结束,可以通过调用PromptDialog.getText来获取用户输入。

52210

快速入门系列--CLR--02多线程

通过研究dump,初步发现是由于配置服务器出现单点故障,然后应用通过多线程调用相关SOA服务出现异常,引发了ThreadAbortException异常,而且由于原有异常处理代码不够严谨,而且与异步发送报警邮件紧密结合在一起...线程(Thread)是进程的基本执行单元,进程入口执行的第一个线程被视为这个进程的主线程.NET应用程序,都是以Main()方法作为入口的,当调用此方法系统就会自动创建一个主线程。...若想在线程终止前恢复线程的执行,可以捕获异常后 ,catch(ThreadAbortException ex){...} 调用Thread.ResetAbort()取消终止。...CLR初始化时,线程池中是没有线程的,其内部维护了一个操作请求队列,应用程序想执行一个异步操作,就调用某个方法,将一个记录项(entry)追加到线程池的队列。...由于线程可以finally块执行未绑定计算或调用Thread.ResetAbort来取消中止,所以不能保证线程将完全结束。如果您希望一直等到被中止线程结束,可以调用Thread.Join方法。

85190

C# Xamarin移动开发项目实战篇

项目实战示例演示 三、C# Xamarin移动开发项目实战分享 3.1、Android 线程实际场景运用( UI Thread) 主线程也叫UI线程 当一个程序启动的时候,系统自动创建一个主线程,在这个主线程...UI组件的更新一定要在UI线程里 android为了线程安全,不允许UI线程外的子线程操作UI,这个结论不仅仅是说android,这个概念同样适用于其他的客户端系统,它的好处提高客户端UI的用户体验和执行...Nuget命令行输入如下的命令即可。...3.5、Android漂亮的下拉列表控件(ComboBox Bar) Spinner这个词可能有些陌生,Java,就是ComboBox。...ProgressDialog的dismiss()来关闭对话框; 5.将对话框显示出来。

9.9K50

如何优雅地中止线程

但是在线程休眠的 10 秒内,通过 stop 方法把线程中止掉,会发现输出结果为 i=1 j=0,也就是代码的前半段 i 自增实现,但是后半段 j 的自增失败,会使线程的数据出现不一致性,从而同步代码块的保证的原子性的目标没有达成...正确的线程中止 - interrupt 介绍了错误的中止方式后,让我们来学习正确的线程中止 - interrupt : 如果目标线程调用 Object class 的 wait() 、wait(long...如果目标线程是被 IO 或者 NIO 的 Channel 所阻塞,同样 IO 操作会被中断返回特殊异常值,达到中止线程的目的。 如果以上条件都不满足,则会设置此线程的中断状态。...,将线程直接中断,而是抛出异常通知我们,开发者就可以控制收到异常后的执行逻辑,让整个程序处于线程安全的状态,这是目前 JDK 版本推荐的 interrupt 方法。...除了 interrupt 的正确方法外,还可以通过标志位的形式来中止线程: 正确的线程中止 - 标志位 如果代码程序逻辑是循环执行的业务,可以程序的执行中线程代码增加一个标志位,比如下面代码

71240

几种常见的Runtime Exception

③ 为什么抛出的异常一定是已检查异常? RuntimeException与Error可以在任何代码中产生,它们不需要由程序员显示的抛出,一旦出现错误,那么相应的异常会被自动抛出。...本级,只能处理一部分内容,有些处理需要在更高一级的环境完成,所以应该再次抛出异常。这样可以使每级的异常处理器处理它能够处理的异常。...也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。 如果不想终止,则必须扑捉所有的运行时异常,决不让这个处理线程退出。...当正在执行的方法所依赖的类定义发生了不兼容的改变,抛出该异常。一般修改了应用的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。...当在Java环境和应用尚未处于某个方法的合法调用状态,而调用了该方法,抛出该异常。 java.lang.IllegalThreadStateException 违法的线程状态异常

1.1K20

android ANR产生原因和解决办法

ANR (Application Not Responding)       ANR定义:Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应...所以一个流畅的合理的应用程序不能出现anr,而让用户每次都要处理这个对话框。因此,程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。     ...当它监测到以下情况的一个,Android就会针对特定的应用程序显示ANR: 1.5秒内没有响应输入的事件(例如,按键按下,屏幕触摸) 2.BroadcastReceiver10秒内没有执行完毕...造成以上两点的原因有很多,比如在主线程做了非常耗时的操作,比如说是下载,io异常等。     ...总结:anr异常也是程序自己经常遇到的问题,主要的解决办法自己最常用的就是不要在主线程做耗时的操作,而应放在子线程来实现,比如采用Handler+mesage的方式,或者是有时候需要做一些和网络相互交互的耗时操作就采用

56910
领券