草庐IT

多线段

全部标签

c# - 对 C# 循环中的多线程感到困惑

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:C#CapturedVariableInLoop我是多线程编程的新手。当我运行下面的代码时,只有最后一个child被执行。有人能告诉我发生了什么事吗?非常感谢。privatevoidProcess(){DictionarydataDict=newDictionary();dataDict.Add(1,2000);dataDict.Add(2,1000);dataDict.Add(3,4000);dataDict.Add(4,3000);foreach(KeyValuePairkvpindataDict){Co

c# - 基于多线程的 RabbitMQ 消费者

我们有一个Windows服务,它监听单个RabbitMQ队列并处理消息。我们想扩展相同的windows服务,使其可以监听RabbitMQ的多个队列并处理消息。不确定是否可以通过使用多线程来实现,因为每个线程都必须监听(阻塞)队列。由于我是多线程的新手,需要以下方面的高级指导,这将帮助我开始构建原型(prototype)。是否可以使用线程在单个应用程序中监听多个队列?如何处理任何一个线程被关闭的情况down(由于异常等),如何在不重新启动的情况下恢复整个窗口服务。可以帮助我处理这种情况的任何设计模式或开源实现。 最佳答案 我喜欢你写问

c# - .NET 的多线程库

我在一些程序中使用了多线程,但仍然感觉不太舒服。有哪些适用于C#/.NET的多线程库,它们之间有哪些优势?我所说的多线程库是指所有有助于简化多线程编程的东西。您定期使用什么.NET集成(即像ThreadPool)?你遇到了哪些问题? 最佳答案 在应用程序中使用多线程有多种原因:界面响应能力并发操作并行加速应该选择哪种方法取决于您要执行的操作。例如,对于UI响应,请考虑使用BackgroundWorker。对于并发操作(例如,服务器:某些东西必须是并行的,但即使在单核系统上也可能确实需要并发),考虑使用线程池或,如果任务是长期存在的并

c# - 更改控制台颜色在多线程应用程序中无法正常工作

我正在开发多线程应用程序(服务器),它基本上是一个控制台应用程序。我在其中向控制台显示处理日志,默认情况下为白色。但在成功的交易中,我以绿色显示文本,在不成功的交易中,我以红色显示文本。为此,我在Program.cs中设置了三个独立的函数。对于简单的日志publicstaticvoidWrite(stringtext){try{Console.Out.Write(text);}catch(Exception){}}对于不成功的交易,我将颜色更改为红色,然后打印,然后变回白色publicstaticvoidWriteError(stringtext){Console.Foreground

c# - 多线程 Web 应用程序

我知道有很多案例是在应用程序中使用多线程的好案例,但什么时候对.netweb应用程序进行多线程最好? 最佳答案 几乎可以肯定,托管环境(IIS等)的Web应用程序已经是多线程的。如果您的页面受CPU限制(并希望使用多核),那么可以说多线程不是一个好主意,因为当您的系统负载不足时您已经在使用它们。它可能有帮助的时候是你受IO限制的时候;例如,您有一个网页需要与3个外部Web服务对话、与数据库对话并写入文件(所有这些都不相关)。您可以在不同的线程上并行执行这些操作(理想情况下使用内置的异步操作,以最大化完成端口的使用)以减少整体处理时间

c# - 简单的多线程安全日志类

创建简单的多线程安全日志记录类的最佳方法是什么?这样就足够了吗?最初创建日志时如何清除日志?publicclassLogging{publicLogging(){}publicvoidWriteToLog(stringmessage){objectlocker=newobject();lock(locker){StreamWriterSW;SW=File.AppendText("Data\\Log.txt");SW.WriteLine(message);SW.Close();}}}publicpartialclassMainWindow:Window{publicstaticMainW

Java EasyExcel带格式多线程导出百万数据

JavaEasyExcel带格式多线程导出百万数据1.背景说明2.方案概述(1)大数据量导出问题主要是以下三个地方:(2)将写入导出Excel等功能单独分开成一个微服务:(3)注意:(4)方案设计:标注说明(5)maven依赖:3.详细设计4.缓存5.可行性验证6.代码以下为结合实际情况作的方案设计,导出阈值以及单sheet页条数都可以根据实际情况调整大佬可直接跳过新手教程,直接查看文末代码————————————————————————————————1.背景说明    针对明细报表,用户会选择针对当前明细数据进行导出,便于本地或者线下进行处理或者计算等需求。不过一般在这种大数据量的导出任务

c# - c#中多线程和异步程序的区别

我最初在Stackoverflow和谷歌中搜索过类似的问题。只有一个链接给出了一些要点,但我看不清楚。[1]以下问题困扰着我:在异步编程中,什么是真正的回调方法?是代表?异步程序的实现是使用多线程吗?如能提供图解说明,将不胜感激[1]"DifferencebetweenMultithreadingandAsynchronousprogramming" 最佳答案 单线程阻塞要理解异步/并发/多线程,我们需要从最基础的知识开始,以及为什么我们要让问题变得如此复杂。一开始只有真正的单线程阻塞应用程序。这些都是非常简单的程序,而且很可能就是

c# - 高性能套接字上的异步等待与线程池与多线程(C10k 解决方案?)

我对async-await、pool和thread真的很困惑。主要问题始于这个问题:“当我必须处理10k套接字I/O时我能做什么?”(又名TheC10kProblem)。首先,我尝试创建一个自定义的线程池架构它使用一个主Queue和多个Thread来处理所有传入数据。这是一次关于理解的很棒的经历thread-safety和multi-threading但thread是一个矫枉过正现在使用async-await。后来,我用async-await实现了一个简单的架构,但我无法理解为什么“async和await关键字不会导致要创建的额外线程。”(fromMSDN)?我认为有必须有一些thre

c# - catch 没有捕获到多线程错误

以下是一个完整的控制台程序,它重现了我遇到的一个奇怪的错误。该程序读取一个包含远程文件url的文件,每行一个。它启动50个线程来下载它们。staticvoidMain(string[]args){try{stringfilePath=ConfigurationManager.AppSettings["filePath"],folder=ConfigurationManager.AppSettings["folder"];Directory.CreateDirectory(folder);Listurls=File.ReadAllLines(filePath).Take(10000).T