首页
学习
活动
专区
圈层
工具
发布

BackgroundWorker在单独的线程上执行操作

直接使用多线程有时候会带来莫名其妙的错误,不定时的发生,有时候会让程序直接崩溃,其实BackgroundWorker 类允许您在单独的专用线程上运行操作。...可以通过编程方式创建 BackgroundWorker,也可以将它从“工具箱”的“组件”选项卡中拖到窗体上。...如果在 Windows 窗体设计器中创建 BackgroundWorker,则它会出现在组件栏中,而且它的属性会显示在“属性”窗口中。 若要设置后台操作,请为 DoWork 事件添加一个事件处理程序。...您必须非常小心,确保在 DoWork 事件处理程序中不操作任何用户界面对象。而应该通过 ProgressChanged 和 RunWorkerCompleted 事件与用户界面进行通信。...BackgroundWorker 事件不跨 AppDomain 边界进行封送处理。请不要使用 BackgroundWorker 组件在多个 AppDomain 中执行多线程操作。

2.2K10

C#报错——(Winform) 在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级

”基于本机 Win32 窗口,而 Win32 窗口从本质上而言是单元线程。...STA 模型意味着可以在任何线程上创建窗口,但窗口一旦创建后就不能切换线程,并且对它的所有函数调用都必须在其创建线程上发生。...STA 模型要求需从控件的非创建线程调用的控件上的任何方法必须被封送到(在其上执行)该控件的创建线程。...如果您在控件中为大量占用资源的任务使用多线程,则用户界面可以在背景线程上执行一个大量占用资源的计算的同时保持可响应。 用人话描述为:控件是属于主线程(UI线程),不可以跨线程修改其父级。...(); } private void button1_Click(object sender, EventArgs e) {        //创建线程并调用方法

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

    关于C#界面开发winform与SharpGL结合鼠标只在OpenGLControl绘图区域显示坐标移动消息响应(c#鼠标单独在某个控件上的消息响应)

    ,左上角就是绘图区域原点(0,0),右下角是长宽,这样非常方便坐标的计算,如果鼠标移动在整个winform界面都有响应那么有时候就会为开发带来困扰了。     ...那么如何单纯的只在OpenGLControl控件区域鼠标响应呢?     ...我觉得这点c#的界面开发就比MFC好太多了       在c#下,我们只需要将鼠标移动到OpenGLControl控件边缘,右键属性 ? 然后在右边的属性栏里点击事件 ?  ...结果测试:鼠标在黑色OpenGLControl控件区域移动  右边的编辑框 不断的打印坐标,其他区域鼠标移动无反应 ?  ...当然啦 其他控件也是这样设置的  所以这个教程适用于绝大多数控件单独对鼠标的响应或者键盘其他的响应 若有兴趣交流分享技术,可关注本人公众号,里面会不定期的分享各种编程教程,和共享源码,诸如研究分享关于

    2.5K30

    如何批量识别图片文字并重命名,批量区域识别图片内容对图片改名,基于WPF和腾讯OCR的解决方案

    OCR结果展示:显示每张图片的识别结果,支持手动编辑。​进度条:显示当前操作进度。​日志输出区:实时显示操作日志和错误信息。​状态栏:显示当前选中图片数量、已处理图片数量等信息。2....识别结果展示在界面上,用户可以查看和编辑。根据识别结果,用户可以选择对图片进行重命名或其他操作。系统完成所有操作后,显示处理结果和日志信息。三、详细代码1....2.6 配置设置在Properties文件夹下创建Settings.settings,添加腾讯云的SecretId和SecretKey。...结果处理与文件重命名:根据识别到的文字内容,自动重命名图片文件,确保文件名的唯一性和可读性。​进度与日志显示:实时显示处理进度和操作日志,提升用户体验。2....优化方向​性能优化:对于大量图片的处理,可以考虑引入多线程或并行处理,提高处理速度。​高级OCR功能:利用腾讯OCR提供的高级功能,如表格识别

    1.4K10

    WPF图片处理相关

    GDI和GDI+ GDI在全称是Graphics Device Interface,即图形设备接口。是图形显示与实际物理设备之间的桥梁。...例如显示一张位图,我们需要进行“创建位图,读取位图文件信息,启用场景设备,调色板变化“等一系列操作。然而有了GDI+,繁琐的步骤再次被简化。...GDI绘图要使用设备环境和句柄;而GDI+全部交由Graphics类管理(不创建句柄)。 GDI绘图时可以使用SelectObject频繁切换图形对象,而GDI+的图形对象是独立的。...有关支持的格式的详细信息,请参阅位图类型。 您可以通过使用 Bitmap 构造函数之一,从文件、流和其他源创建图像,并使用 Save 方法将它们保存到流或文件系统。...BitmapImage BitmapImage从图像文件创建位图,并将其用作 Image 控件的源 // Create the image element.

    4.2K31

    WPF内存优化

    页面关闭时没结束的线程要结束线程 静态变量 页面关闭时静态变量要设置为空 事件 使用事件时,如果是一个类的事件在另一个类里面被注册(委托方法在这个类里面),要注销事件 Window1.w2.TextBox1...在Image里面使用BitMapImage时要用 BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.CacheOption = BitmapCacheOption.OnLoad...public class CustomCollectionClass : INotifyPropertyChanged {} 在 WPF 中,不标记为 OneTime 必须侦听属性的一个数据绑定操作从源对象...将控件注册为控制中的键盘焦点的内部通知在KeyboardNavigation类。 该应用程序创建这些控件的很多。 例如对于您添加并删除这些控件。...要在创建 BitmapImage 后关闭流,请将 CacheOption 属性设置为 BitmapCacheOption.OnLoad。

    2.2K41

    WPF 从文件创建图片的方法

    本文告诉大家通过 FileStream 创建文件的方法 如果直接通过文件的 URL 创建,那么可能出现文件被占用的问题,不能比较好做文件的修改,建议通过内存的方式加载 下面是通过内存加载的代码...} 通过这个方法加载的图片没有做内存的优化,也就是图片多大,占用的内存就多大 这里存在两个坑,第一个是 memoryStream 在复制之后需要移动到前面,如果没有设置,就会出现下面的代码 FileFormatException...如果调用了 memoryStream.Dispose 就会显示空白而不是图片 var bitmapImage = new BitmapImage(); using...// 下面的代码会让图片显示空 //memoryStream.Dispose(); } 因为图片需要读取内容,但是内容已经是空的...,就没有显示 ---- 本文会经常更新,请阅读原文: https://lindexi.gitee.io/post/WPF-%E4%BB%8E%E6%96%87%E4%BB%B6%E5%

    2.1K40

    WPF中加载本地图片推荐方式

    但是不建议加载新生成的图片,比如截屏。 因为这样加载一方面图片的内存释放会有问题,容易导致内存泄漏,另一方面,被加载的图片就会处于占用状态,如果此时我们要处理图片比如压缩上传,就会因占用而报错。...Converter={StaticResource StringToImageSourceConverter}}" Stretch="Uniform" /> 代码中加载 上面说的是在...WPF中使用转换器来把图片加载到内存中的方式,当然我们也可以在代码中加载。...要在创建 BitmapImage 后关闭流,请将 CacheOption 属性设置为 BitmapCacheOption.OnLoad。...= bitmap; 使用Image控件显示图片后,虽然自己释放了图片资源,Image.Source = null 了一下,但是图片实际没有释放。

    1K30

    WPF 从文件创建图片的方法

    本文告诉大家通过 FileStream 创建文件的方法 如果直接通过文件的 URL 创建,那么可能出现文件被占用的问题,不能比较好做文件的修改,建议通过内存的方式加载 下面是通过内存加载的代码...} 通过这个方法加载的图片没有做内存的优化,也就是图片多大,占用的内存就多大 这里存在两个坑,第一个是 memoryStream 在复制之后需要移动到前面,如果没有设置,就会出现下面的代码 FileFormatException...如果调用了 memoryStream.Dispose 就会显示空白而不是图片 var bitmapImage = new BitmapImage(); using...// 下面的代码会让图片显示空 //memoryStream.Dispose(); } 因为图片需要读取内容,但是内容已经是空的...,就没有显示

    1.8K20

    dotnet 读 WPF 源代码笔记 了解 WPF 已知问题 后台线程创建 WriteableBitmap 锁住主线程

    在 WPF 中,如果在没有开启 Dispatcher 的后台线程里面创建 WriteableBitmap 对象,在 WriteableBitmap 构造函数传入在主线程创建的 BitmapSource...on other thread · Issue #4396 · dotnet/wpf 复现步骤十分简单,只需要在后台线程创建完成一个 BitmapSource 分别传入给主线程显示和后台线程创建 WriteableBitmap...然而后台线程后续需要等待主线程返回,才能完成创建图片,因此主线程在等待后台线程的锁而后台线程在等待主线程返回,两个线程在等待 通过 WPF 仓库的源代码可以看到 WriteableBitmap.InitFromBitmapSource...同时创建的图片的参数还是在主线程使用的图片,这样的逻辑不多,更多使用的是只在后台线程创建图片然后通过 Freeze 给到主线程用来解决性能问题。...无盈利,不卖课,做纯粹的技术博客

    76120

    WPF 中如何创建忽略 DPI 属性的图片

    尤其是 Image 控件显示的图片会根据图片 EXIF 中的 DPI 信息和屏幕 DPI 自动缩放图片。...对于 UI 用图来说这是好事,但对于软件用户随便插入的图片来说就不是了——用户传入的图片可能是各种各样不统一的 DPI。因此这种 DPI 我们应该忽略。...除此之外,我们还可能可以尝试这些方法: 创建 BitmapImage 对象,根据当前屏幕的 DPI 值计算 DecodePixelWidth 和 DecodePixelHeight; 创建 DrawingImage...对象,直接按照 WPF 的坐标单位绘制图片原始像素大小的图片; 创建 Bitmap / WriteableBitmap 对象,重新创建一张 96 DPI 的图片。...由于尺寸是在绘制的时候确定的,所以不需要 Image 控件也设置尺寸。

    3.6K20

    .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)

    更新于 2020-02-17 00:47 获取图片宽高的方法有很多种,本文介绍 .NET 中获取图片宽高的几种方法并评估其性能。...System.Windows.Media.Imaging.BitmapDecoder System.Drawing.Imaging.Metafile 实际上不要被这个名字误解了,Metafile 并不是...System.Drawing.Bitmap 这个实际上是封装的 GDI+ 位图,所以其性能最好也是 GDI+ 的性能,然而都知道 GDI+ 的静态图片性能不错,但比起现代的其他框架来说确实差得多。...这是 WPF 框架中提供的显示位图的方法,生成的图片可以直接被 WPF 框架显示。...,但相比完全加载图片到可以显示的 System.Windows.Media.Imaging.BitmapImage,此方法的性能会好得多。

    3K20

    解释SQL查询计划(一)

    嵌入式SQL基于指针的SELECT命令在OPEN命令调用声明的查询时创建SQL语句。管理门户缓存查询列表中不会创建单独的条目。...在定义触发器时定义SQL语句; 删除触发器将删除SQL语句。 触发触发器不会创建SQL语句。 CREATE VIEW 不创建SQL语句,因为没有编译任何内容。...页面大小和最大行选项是用户自定义的。 Catalog Details选项卡:选择一个表并显示其Catalog详细信息。 此选项卡提供了一个表的SQL语句按钮,用于显示与该表关联的SQL语句。...例如,如果一个查询引用一个视图,SQL Statements将显示两个语句文本,一个列在视图名称下,另一个列在基础表名称下。 冻结任意一条语句都会导致两个语句的Plan State为Frozen。...%PARALLEL查询的SQL语句的计划状态为“未冻结/并行”,不能被冻结。 不包含FROM子句(因此不引用任何表)的查询仍然创建SQL语句。

    4K20

    解释SQL查询计划(二)

    这将在单独的选项卡中显示SQL语句详细信息。 该界面允许打开多个选项卡进行比较。 它还提供了一个Query Test按钮,用于显示SQL Runtime Statistics页面。...这将在弹出窗口中显示SQL语句详细信息。 可以使用“SQL语句详细信息”显示来查看查询计划,并冻结或解冻查询计划。 “SQL语句详细信息”提供冻结或解冻查询计划的按钮。...冻结计划不同Frozen plan different:冻结计划时,会显示该字段,显示冻结的计划与未冻结的计划是否不同。...由并行运行的实现生成的查询没有单独跟踪其性能统计信息。 InterSystems IRIS不记录“自然”查询的性能统计数据。...如果SQL语句已冻结,则重新编译MAC例程仅更新此时间戳;在您解冻计划之前,Plan时间戳不会更改;然后Plan时间戳将显示计划解冻的时间。

    2.4K20

    WPF 修改图片颜色

    本文告诉大家如何修改图片的颜色,如去掉图片的蓝色 在 WPF 可以使用很多图片处理的方法,本文告诉大家的是一个图片处理,可以把处理的图片保存在文件。...在阅读本文,我假设大家是熟悉 WPF 的,至少了解 C# ,也知道图片的格式。...在 WPF 可以使用 ARBG 数组表示图片,本文修改图片颜色的方法就是使用 ARBG 数组的方法修改,修改里面的元素的值。...解析文件 创建图片 在读取图片之后就可以创建图片 var writeableBitmap = new WriteableBitmap(bitmapImage); 转换图片格式 如果读取到的图片不是...,可以看到图片还是很好看 读取数组 在图片可以看到图片是使用 BGRA 的格式数组,所以只需要读取图片数组就可以修改图片 读取图片需要使用不安全代码,需要右击项目属性,点击生成,允许不安全代码。

    1.9K20

    WPF备忘录(7)WPF图片资源路径介绍

    运行后ImgResource能正常显示图片,但是ImgContent控件无显示。将Content.jpg图片拷贝至应用程序的Debug目录中,ImgContent控件可显示图片。      ...生成操作设置为Resource,生成的时候资源将添加到程序集中。可以尝试将原有的图片删除,图片正常显示。将原有图片用新图片替换,仍显示原有图片。只有选择重新生成操作才能更新图片。     ...但是按F5运行,生成成功并正常显示。可见在改变Content资源的时候,程序集中的定制特性没有做相应的变化。       删除XAML中的Source属性,在后台为两个图片控件设置Source属性。...第三种方式可以访问网站运行目录下的Content资源文件以及完全松散的文件。完全松散的文件指那些没有添加到项目中,只是拷贝在程序目录中的文件。应用程序根本不知道它的存在。      ...pack URI格式是XML文件规范的一部分,具体格式如下 pack://packageURI/partPath。PackageURI实际上是在URI中放一个URI,它是把反斜杠都变成了逗号。

    1.5K50
    领券