【c#-是否可以在非WPF线程上使用Dispatcher?多线程新手】教程文章相关的互联网学习教程文章

C#的多线程机制探索(下)

然后在下面这个类MonitorSample的Main()函数中我们要做的就是创建两个线程分别作为生产者和消费者,使用CellProd.ThreadRun()方法和CellCons.ThreadRun()方法对同一个Cell对象进行操作。public class MonitorSample{  public static void Main(String[] args)  {  int result = 0; file://一个标志位,如果是0表示程序没有出错,如果是1表明有错误发生  Cell cell = new Cell( );   //下面使用cell初...

C#中多线程中变量研究【代码】

今天在知乎上看到一个问题【为什么在同一进程中创建不同线程,但线程各自的变量无法在线程间互相访问?】。在多线程中,每个线程都是独立运行的,不同的线程有可能是同一段代码,但不会是同一作用域,所以不会共享。而共享内存,并没有作用域之分,同一进程内,不管什么线程都可以通过同一虚拟内存地址来访问,不同进程也可以通过ipc等方式共享内存数据。全局变量:任何线程都可以访问;局部变量(栈变量):任何线程执行到该函数时均...

c# – 多线程异常冒泡

我有一个处理事件回调的应用程序,在我的例子中,它是SerialPort上的DataReceived事件.在该回调中,我有业务逻辑,需要在另一个线程上引发异常.该线程正在等待事件监听器向其发送消息,或者让它知道发生了异常. 跨线程保留堆栈跟踪的最佳方法是什么? 将线程传递给工作线程并重新抛出它会导致堆栈跟踪丢失.解决方法:>这取决于您的方法,例如TPL:throw – >AggregateException.> BackGroundWorker – >你必须要注意结果中的错误.>主题 ...

c# – 具有大量文件IO任务的多线程【代码】

我不是C#的新手,但我对语言不太熟悉,知道如何做我需要做的事情. 我有一个文件,称之为File1.txt. File1.txt有100,000行左右.我将复制File1.txt并将其命名为File1_untested.txt.我还将创建一个空文件“Successes.txt”对于文件中的每一行: >从File1_untested.txt中删除此行>如果此行通过测试,请将其写入Successes.txt 所以,我的问题是,我怎样才能多线程呢? 到目前为止,我的方法是创建一个对象(LineChecker),给对象提供要检查的行,并...

推荐使用.Net / C#中的多线程书籍?

有没有人为.net编写任何涉及多线程的书籍?我看过Joe Duffy和Joseph Albahari的书,他们很好.然而,我希望有一些东西可以触及PLINQ和TPL,Duffy的书确实如此,但它的许多例子和片段都在C中.我理想地寻找更多C#导向的东西. 谢谢你的建议.解决方法:C# 4.0 in a Nutshell尚未发布,但您可以在线访问该手稿.它涵盖了PLINQ / TPL库.

c# – 如何在多线程控制台应用程序中使用Sharp Architecture设置NHibernate?【代码】

我对这些技术还很陌生.这里真正的问题是如何在控制台应用程序中管理每个线程的会话.目前,如果我将它作为单个线程运行,那么一切都很顺利.一旦我切换到多线程模型,我将开始在会话级别看到争用(因为Session对象不是设计上的安全性)KeyNotFound异常(以及其他)开始被抛出. 在Web应用程序中,您可以执行以下操作:/// <summary>/// Due to issues on IIS7, the NHibernate initialization cannot reside in Init() but/// must only be ca...

C#中的多线程:如何将函数名称传递给另一个函数来启动新线程?【代码】

我在我的C#代码中使用多线程如下:Thread startThread;public void NewThread() {ThreadStart starter = delegate { foo(); };startThread = new Thread(starter);startThread.Start(); }private void foo() {//do some work }然后在我的应用程序中,我调用NewThread()来运行新线程. 但是现在我在每个类上都有很多线程,并且每个类都有一个NewThread(),我想把它移动到一个静态的Util类,并在每次我希望在该函数上有一个新线程时将它传...

5天玩转C#并行和多线程编程 —— 第五天 多线程编程大总结【代码】【图】

5天玩转C#并行和多线程编程 —— 第五天 多线程编程大总结 ?5天玩转C#并行和多线程编程系列文章目录 5天玩转C#并行和多线程编程 —— 第一天 认识Parallel 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq 5天玩转C#并行和多线程编程 —— 第三天 认识和使用Task 5天玩转C#并行和多线程编程 —— 第四天 Task进阶 5天玩转C#并行和多线程编程 —— 第五天 多线程编程大总结 一、多线程带来的问题 1、死锁问题 前面我们学...

c# – 没有第二种形式的多线程消息【代码】

我有一个使用COM组件的C#应用??程序.此COM组件需要消息泵(Application.Run())来执行其处理.这意味着它一直停留在主线程上.但是我最近发现可以在另一个获得自己的ApplicationContext的线程上启动另一个Application.Run. 所以我想在其自己的Application.Run()中将COM组件托管在自己的线程上,但我无法弄清楚如何在不创建UI表单的情况下在新线程上启动. 我需要与线程通信的WindowsFormsSynchronizationContext才会在Application.Run()之...

C#多线程编程:使用并发集合

原文链接:https://www.cnblogs.com/wyt007/p/9486752.html 编程需要对基本的数据结构和算法有所了解。程序员为并发情况选择最合适的数据结构,那就需要知道很多事情,例如算法运行时间、空间复杂度,以及大写0标记法等。在不同的广为人知的场景中,我们总知道哪种数据结构更高效。 对于并行计算,我们需要使用适当的数据结构。这些数据结构具备可伸缩性,尽可能地避免锁,同时还能提供线程安全的访问。.NET framework版本4引入了System.C...

c# – 如何在多线程应用程序中使用随机类正确【代码】

我需要使用随机类在公共静态函数内的多线程应用程序中生成随机数.我怎样才能实现它.目前,下面的功能运行良好,但与随机类相比,它不是很快.因此,我需要修改下面的函数并使其与随机类一起工作,同时在该类中发生数千个并发调用.如果我使用随机它,我想每次通话使用相同的种子,随机化非常糟糕.我现在的课using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Security.Cryptography;publ...

c# – winforms应用程序中的多线程【代码】

我正在编写一个win表单,使用报表查看器创建多个PDF文件.这些PDF文件分为4个主要部分,每个部分负责创建特定报告.这些进程创建的文件最少为1个,最多为用户数(目前为50个). 该程序已经存在,依次使用4种方法.为了提高用户数量的额外性能,我想在4个独立的线程中将这些方法与邮件进程分开. 虽然我是使用C#进行多线程处理的新手,但我读了很多文章如何实现这一点.我唯一不确定的是我应该从哪个方向开始.当我阅读多篇博文时,我不确定是否要使...

c# – 对多个文件副本使用多线程【代码】

我要复制大量文件(10000个文件) 因为复制需要很长时间.我尝试使用两个线程而不是单个线程,一个用于复制列表中的奇数文件,另一个用于复制列表中的偶数 我用过这段代码:ThreadPool.QueueUserWorkItem(new WaitCallback(this.RunFileCopy),object)但是在使用单线程和使用两个线程时,时间上没有显着差异. 这可能是什么原因?解决方法:文件复制不是CPU进程,而是IO进程,因此多线程或并行性不会对您有所帮助. 多线程在几乎所有情况下都会...

c# – 如何通过相同的函数多线程我的代码同时处理多个文件?【代码】

我使用以下例程处理目录中的一组视频:AllVideos = new List<MyVideo>();for (int i = 0; i < AllVideosFileNames.Length; i++) {MyVideo CurrentVid = new MyVideo(AllVideosFileNames[i], false); // constructor (loads the video to the system) CurrentVid.PopulateAllFrames(); // Method that takes foreverCurrentVid.PopluateTestFrames(); // Method that takes less than foreverCurrentVid.NormalizeTestFrames(); // ...

C# – 移动文件 – 到队列或多线程

我有一个应用程序,使用Flex前端和.NET Web服务将项目及其文件从预览移动到生产.目前,该过程大约需要每个项目5-10分钟.除了延迟问题,它真的不应该花那么长时间.我想知道这是否是一个很好的多线程用例.此外,考虑到用户可能想要一个接一个地推送多个项目,有没有办法排队作业. 任何建议和例子都非常感谢. 谢谢!解决方法:执行大量磁盘IO的东西通常不适合多线程,因为磁盘一次只能做一件事.但是,如果您要推送多台服务器或服务器具有特别好...