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

c# – 用于进行受控大小的批量插入的数据的线程安全缓冲区【代码】

我有一个模拟生成必须保存到数据库的数据.ParallelLoopResult res = Parallel.For(0, 1000000, options, (r, state) => {ComplexDataSet cds = GenerateData(r);SaveDataToDatabase(cds);});模拟生成了大量的数据,因此首先生成它然后将其保存到数据库(最多1 GB的数据)是不切实际的,将它一个一个地保存到数据库也没有意义. (太小的转换是实用的).我想将它们作为受控大小的批量插入插入到数据库中(例如100个一次提交). 但是,我认为我...

c# – 通过线程在另一个表单上显示一个表单作为对话框【代码】

以下代码给出了“跨线程操作”异常.仅仅因为“form2.ResumeLayout(false)”.如果这个陈述被评论,我看不到浏览器的形式.我知道ResumeLayout(false)的需要,但有解决方案吗?namespace WindowsFormsApplication1 { public partial class Form1: Form {private System.ComponentModel.IContainer components = null;protected override void Dispose(bool disposing){ if (disposing && (components != null)) { components.Dispose()...

c# – 为什么我的异步回调在同一个线程中运行?【代码】

我正在尝试使用FtpWebRequest异步调用(BeginGetResponse / EndGetResponse). 但是,看来BeginGetResponse的回调是在与我的应用程序相同的线程中运行的,当时我的印象是它会使用不同的(和线程池)线程.这意味着我的应用程序在继续之前阻止回调. 我已经设置了LINQPad概念验证如下:"Starting".Dump(); Thread.CurrentThread.GetHashCode().Dump(); Thread.CurrentThread.IsThreadPoolThread.Dump();IAsyncResult result = request.Begi...

c# – 围绕多个语句的锁定语句是否确保所有更改对其他线程可见(假设它们进入相同的互斥锁)?【代码】

如果在一个锁定代码块中有多个共享变量赋值,它是否一定意味着所有这些更改都会立即被其他线程看到,一旦它们在同一个对象上输入一个锁定语句就可能在其他处理器上运行 – 或者没有这样的保证? 很多例子都显示了一个公共变量的“set”或“get”,并详细介绍了内存障碍,但如果内部有更复杂的语句,会发生什么?有可能甚至函数调用做其他事情? 像这样的东西:lock(sharedObject) {x = 10;y = 20;z = a + 10; }如果此代码在另一个可能在...

c# – Visual Studio,F11,只是对特定线程正在做什么感兴趣?

我只是想知道是否有人知道是否有可能设置debuger使F11只对单个线程感兴趣?我有两个线程运行atm但我只对其中一个感兴趣.因此,我不希望屏幕继续向上跳跃,以显示第一个线程正在做什么.我喜欢将其设置为仅显示第二个线程正在执行的操作. 任何指针都将不胜感激,谢谢.解决方法:一种方法是冻结你不感兴趣的主题. 在Visual Studio中,显示“线程”窗口,可从Debug-> Windows菜单中获得. 然后,在使用F11进行跟踪时,如果调试器在您不感兴趣的线...

c# – 如何在不创建多个线程的情况下进行并发请求?【代码】

有人可以展示如何在不创建多个线程的情况下发出并发请求吗?例如,我想要一个可以发出100个Web请求的程序,我不希望任何时候有超过8个并发请求.我不想为8个并发请求创建8个线程.当一个线程发出异步请求时,可以使用相同的线程来发出下一个请求,依此类推.我很抱歉,但我无法解决这个问题,并希望看到最好的解决方案.如果不清楚,我所说的请求是异步的.我希望看到一个不使用任何锁的解决方案,并使用内置类来完成工作. 这是我提出的一些代码...

c# – 使用加密后,在终结器线程中获取“ReleaseHandleFailed”MDA【代码】

我在循环中第二次运行此代码后获得了MDA(使用不同的文件参数:byte[] encryptedData = File.ReadAllBytes(file); // before this line it throws, see exception below long dataOffset;using (var stream = new MemoryStream(encryptedData)) using (var reader = new BinaryReader(stream)) {// ... read header information which is not encrypted }using (var stream = new MemoryStream(encryptedData)) {stream.Seek(dataOf...

c# – 我可以在后台线程中访问会话吗?

如何在c#.net webapplication中的后台线程中访问我的项目会话? 它给了我session值= null. 任何的想法?解决方法:线程池中的线程由系统管理.这些线程未绑定到当前请求.因此,会话不适用于他们. session lost when multithreading though

c# – NotifyPropertyChanged线程安全吗?【代码】

我正在从INotifyPropertyChanged查看NotifyPropertyChanged()并注意到在Microsoft的示例中,例如: http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx 首先没有捕获委托引用(正如它在此处所说的那样:Use of null check in event handler) 我查看了自动生成的Reference.cs以获取我的ServiceReferences,并完成了此检查. 所以我的问题是我应该这样做(以任何形式,如扩展方法等)?如果不这样...

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# – 即使线程中的方法已经返回,为什么Thread.Join()会挂起?【代码】

我有一个WPF应用程序,它使用一些库代码进行身份验证,需要在单线程单元线程中运行.我的方法是生成一个单独的线程来获取身份验证对象,阻塞直到线程返回然后继续执行.但是,在某些情况下,我的应用程序挂起在Thread.Join()上,即使线程方法已返回.public static ClaimsAuthenticationResult GetClientContextAndCookieCollection(string siteUrl, out CookieCollection cookieResult){ClaimsAuthenticationResult authResult = new Claim...

c# – DateTime.TryParseExact()因线程的文化信息而失败【代码】

我在现有实现中有以下代码行DateTime.TryParseExact("15/11/2021 00:00:00", "dd/MM/yyyy HH:mm:ss",null,DateTimeStyles.None,out maturityDate);返回false表示无法解析传递的字符串.这对我来说真的很令人惊讶,因为这里的模式似乎是准确的.根据MSDN在第三个参数内的空值意味着将使用当前的文化信息(我假设它是Thread.CurrentThread.CurrentCulture). 观察窗口中的Thread.CurrentThread.CurrentCulture是en-US,但是稍后在代码中的某...

不断运行的C#代码 – 服务还是单独的线程?

我有一个.NET 4 Web应用程序,它有3个独立的项目–DAL,BAL和UI.我正在使用Entity Framework进行数据库交互. 我有代码循环遍历一堆数据库数据,根据它找到的内容调用方法,然后更新数据库.我希望这段代码一直运行.同时,我希望用户能够在后台代码不断运行的同时登录并运行报表等. 对此有什么好处?我是否为不断运行的代码,单独的线程,为不断运行的代码完全独立的项目或不同的方法创建服务? 另外,根据给出的答案,我将如何启动不断运行的...

c# – 使用yield访问IEnumerable的多个线程【代码】

我正在使用第三方库来迭代一些非常大的平面文件,这可能需要很长时间.该库提供了一个枚举器,因此您可以生成每个结果并对其进行处理,同时枚举器然后提取平面文件中的下一个项目. 例如:IEnumerable<object> GetItems() {var cursor = new Cursor;try{cursor.Open();while (!cursor.EOF){yield return new //object;cursor.MoveNext();}}finally{if (cursor.IsOpen){cursor.Close();}} }我想要实现的是拥有两个相同Enumerable的消费者...

c# – 队列线程安全:一位作家,一位读者

我有一个队列< T> _q = new Queue< T>(); 总是只有一个线程填充它:_q.Enqueue(msg); 总有一个线程消耗它:_q.Dequeue(); 我想在两个线程中都是无锁的.性能很重要,但安全性是首要的. 我是否需要将_q作为ConcurrentQueue< T>? UPD这可能很重要:在编写线程后,我不需要确定读取线程是否会立即成功地使项目出列.如果将采取一些虚假的出局 – 那没关系.解决方法:Do I need making _q a ConcurrentQueue是.队列不是线程安全的.