【c# – 等待后台线程完成】教程文章相关的互联网学习教程文章

c#-在.NET中实现线程对话(如Facebook Wall)的最佳方法是什么?

我只是想知道实现像Facebook Wall这样的线程对话的最佳方法是在其中将评论显示在每个帖子下,而较旧的评论则可以折叠和展开.我的本能是使用嵌套的数据列表,但是我认为这可能会降低性能.解决方法:我会考虑使用ASP .NET MVC而不是webforms.我将使用初始页面加载来加载服务器端的前几个帖子,然后考虑使用带有jQuery的AJAX来实现客户端解决方案以检索其他记录-这里有一个example of that here.

C#IE BHO:如何将DOM对象编组到工作线程中?【代码】

我试图在C#中编写一个Browser Helper Object(BHO),用于在单独的线程上操作DOM.我还看到了与此有关的其他几个问题,答案似乎是“您需要将DOM对象从创建它们的线程中编组到您的工作线程中”.很好的建议,这很合理,但是我找不到有关如何执行此操作的C#示例.有一些需要使用的P / Invoke API的模糊指针,但是我很难理解如何将其实现到BHO中. 我通过示例学习得最好,并且文档中缺少此类的.NET示例.有人可以指出一个示例,其中在托管代码BHO的上...

c#-是否可以在非WPF线程上使用Dispatcher?多线程新手【代码】

为什么这不起作用? 我正在尝试做的是:我需要一种在特定线程中运行特定方法的方法,该特定线程一直存在到程序结束. 我其他可能的选择:据我了解,一种可行的方法是实现队列.我可以将要在特定线程中运行的方法推入到其中.在特定线程中,我将旋转并进入sleeping / monitor.pulse,以查看队列中是否有等待运行的委托. 我的目标:是为了避免创建委托队列,维护锁等的所有麻烦.看来WPF世界中存在一个称为Dispatcher的现成解决方案. WPF控件大...

C#-SaveFileDialog:InvalidOperationException由于在多线程应用程序中的“所有者”参数【代码】

很长的帖子很抱歉,但是我试图非常详细地解释这个问题,以免引起混淆.最后一句包含实际问题. 我正在用C#/.NET编写多线程应用程序. 该应用程序包含一个主窗口,该窗口可可视化来自压力传感器的数据.传感器数据在自己的线程中获取. 数据也记录在类ListView的实例中: 可以通过“保存”按钮将记录的数据保存到磁盘上的文件(应打开.NET类SaveFileDialog的实例). 此SaveFileDialog也在自己的线程中运行.现在调用方法SaveFileDialog.ShowDia...

C#-DataTable内部索引已损坏:“ 5”.用于线程

我使用了多个线程之间共享的静态全局数据集. 我有以下异常:Data Table internal index iscorrupted: ‘5’.在线程处理中,我从数据表&将数据表中的值更新(用于合并),并在线程中完成两个操作.解决方法:您正在对来自不同线程的数据集进行操作. 数据集不是线程安全的,您应该创建一个包装器类,以保护数据集免于进行超过1次的操作.这称为互斥量: link to microsoft msdn 更好的解决方案是根本不使用全局状态.这将解决您的问题,而无需任...

c# Task多线程并行任务中等待所有线程都执行完成

C#多线程中如何等待所有线程的任务都执行完成呢?在.net 4.0以4.0+中,有Task.WaitAll(params Task[] tasks)方法来等待所有Task[],而不需要更多的操作。按照微软官方的文档,我写了一个实例来调试和说明: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks;namespace ConsoleApp {class Program{static void Main(string[] args){...

C#-使用Lambda创建多个线程【代码】

public void GatherDataFromSwitches(Device[] switches) {List<Thread> workerThreads = new List<Thread>();for(int i = 0; i < switches.Length - 1; i++){Thread t = new Thread(unused => GatherDataFromSwitch(switches[i]));workerThreads.Add(t);t.Start();}foreach (Thread d in workerThreads) d.Join(); //wait for all threads to finish }如果我在运行该方法后遍历交换机,则会注意到某些交换机没有添加数据,而某些交换...

C#-在服务器应用中使用threadPool或new thread()实现多线程

我已经对服务器应用程序中多线程的动态性和含义做了很多研究(饿死了clr线程池等),但是为了便于说明,我有4个异步进程,每个进程我需要完成我的(asp.net)页面…现在,让我们说时间是更关键的因素,我的网站应该不会遇到大量流量.在这种情况下,是否最好使用新的Thread()方法或ThreadPool.QueueUserWorkItem方法生成4个线程? 我的关注点(也是我的观点)是,使用ThreadPool方法可能会创建一个比我真正想要的线程池大的线程池?当我只需要4个...

c#-为繁重的任务设置低线程优先级

首先,感谢您的所有答复! 我想更具体一点-我有一个网站,显示一些当前和历史报告.我希望能够允许用户删除所有或部分历史记录,同时仍在浏览网站. 因此,我想运行一个单独的线程来处理删除数据,但是我想给该线程一个低优先级,这样就不会使网站变慢或反应迟钝. 我目前正处于设计阶段,希望能提出一些策略建议.谢谢!解决方法:你应该没事的.降低CPU密集型后台任务的优先级以允许来自GUI和/或其他应用程序的“正常”响应,是更改线程优先级的...

C# 多线程处理List数据【代码】

代码思路 将要处理的数据放到ConcurrentQueue中,然后开启多个线程去处理数据,处理完成后,再到队列中获取下一个待处理数据。ConcurrentQueue 表示线程安全的先进先出 (FIFO) 集合,属于 System.Collections.Concurrent 命名空间下的一个数据结构直接上代码 /// <summary> /// 多线程处理数据(无返回值) /// </summary> /// <typeparam name="T">数据类型</typeparam> /// <param name="list">待处理数据</param> /// <param na...

C# 多线程

转自https://www.cnblogs.com/yaosj/p/10342883.html 目录简介: 一.Task的创建1.创建Task类 2.Task.Factory.StartNew 3.Task.Run 4.TaskStatus二.?TaskCreationOptions1. LongRunning ?2. 父子任务(AttachedToParent,DenyChildAttach)?三.CancellationToken 取消任务 ?四.方法1 Wait 2.WaitAll? 3.WaitAny 4.WhenAll 5.WhenAny 6.ContinueWith?七.TaskFactory类1.ContinueWhenAll ?2.ContinueWhenAny ?3.FromAsync 回到顶部 简...

C#使用多线程还是作为单独的应用程序运行?

我有一个Windows应用程序,该应用程序从数据库中读取并根据用户选择的项目填充多个Listview容器.可以使用MenuItem选项右键单击特定Listview中的某些数据,以“将数据写入Excel”.这可能需要10分钟左右才能完成. 我有用独立代码编写的Excel Interop部分,或者可以将其合并到应用程序项目中. Excel Interop应用程序仅需要1个参数即可执行操作. 我的问题是……我应该将其合并到Windows App中并使用多线程还是将其作为独立的应用程序(似乎...

c#-是从调用线程还是辅助线程调用BackgroundWorker的OnDoWork?【代码】

我继承了BackgroundWorker并重写了OnDoWork:protected override void OnDoWork(DoWorkEventArgs e) {WorkerEndedEvent.Reset();base.OnDoWork(e); }我的问题是,它将从哪个线程调用?是否可以确保在我调用RunWorkerAsync()时调用它,还是可以在以后调用它(即从工作线程中调用)?解决方法:它将由工作线程调用,并且不能保证在调用RunWorkerAsync期间被调用. RunWorkerAsync的文档指出:The RunWorkerAsync method submits a request t...

c#-EntityFramework 6线程中的IDbCommandInterceptor安全吗

使用DbInterception add方法注册时,IDbCommandInterceptor实例是否被认为是线程安全的?我实现了一个符合IDbCommandInterceptor接口的类,并且在跟踪调用其中一种执行方法时的命令开始时间与调用相应已执行方法时的停止时间相比,正在跟踪命令的开始时间.我将此信息存储在一个私有ivar列表中,需要知道我在做什么是否安全.解决方法:事实证明,IDbCommandInterceptor不是线程安全的,因为它仅被实例化一次.

c#-确保类只能由实例化它的线程使用【代码】

我创建了一个不是线程安全的类,如果假定是线程安全的,则可能导致错误.当我努力使我的类成为线程安全的时,我想使实例只能由一个线程使用.当前,我的实现是检查当前线程是否与用于在每个暴露点构造实例的线程相同.public class NotThreadSafeClass {private readonly int _creatorThreadId;public NotThreadSafeClass(){_creatorThreadId = Thread.CurrentThread.ManagedThreadId;}public string ExposedProp{get{AssertSameThread();...