多线程
文章平均质量分 68
君子居易
“正已而不求于人,则无怨,上不怨天,下不尤人,故君子居易以俟命,小人行险以徼幸。”
展开
-
什么是SynchronizationContext?
在这篇文章中,我解释了SynchronizationContext它是什么以及它试图解决什么问题。我还更深入地探讨了为什么我们需要这个结构以及 .Net 如何在后台处理这些问题。翻译 2022-09-05 19:44:27 · 1725 阅读 · 0 评论 -
C# – 正确锁定列表在多线程场景中
正确锁定列表在多线程场景中翻译 2022-08-06 10:28:16 · 1361 阅读 · 0 评论 -
C# 中的同步、异步和多线程
异步中的队列执行和并发执行翻译 2022-08-06 09:42:15 · 1327 阅读 · 0 评论 -
删除async void
我再说一遍:async await很棒。与每个伟大的工具一样,我们有责任了解如何最好地使用它。翻译 2022-07-13 16:36:22 · 170 阅读 · 0 评论 -
Thread.Sleep 是程序设计不佳的标志。
这是有缺陷的逻辑,因为应用程序仍然不能与Thread.Sleep 一起工作。这实际上只是解决了特定计算机上的问题。最初的问题可能是时间/同步问题,通过使用 Thread.Sleep 隐藏它来忽略它只会延迟问题并使其以随机、难以重现的方式发生。...翻译 2022-07-13 15:39:53 · 1143 阅读 · 0 评论 -
异步编程:异步 MVVM 应用程序的模式:数据绑定
当代码库从同步转换为异步时,通常服务或数据访问组件首先发生变化,然后异步从那里向 UI 增长。完成几次后,将方法从同步转换为异步就变得相当简单了。我期望(并希望)这种翻译将被未来的工具自动化。但是,当异步访问 UI 时,就需要进行真正的更改。...翻译 2022-07-13 09:25:40 · 525 阅读 · 0 评论 -
异步 Task.WhenAll 超时
解决方案:您可以将结果Task与Task.Delay()using结合起来Task.WhenAny():await Task.WhenAny(Task.WhenAll(tasks), Task.Delay(timeout));如果您想在超时的情况下获取已完成的任务:var completedResults = tasks .Where(t => t.Status == TaskStatus.RanToCompletion) .Select(t => t.Resu原创 2021-07-09 09:28:18 · 933 阅读 · 0 评论 -
C# 使用 AsyncEx 库的 AsyncLock 异步锁
这async几乎是lock关键字或Mutex类型的等效变量,类似于Stephen Toub的AsyncLock。它几乎是等效的,因为该lock关键字允许重新输入,而async-ready锁目前无法实现。一种AsyncLock是采取或不。可以通过调用异步获取该锁LockAsync,并通过处理该任务的结果将其释放。AsyncLock可选CancellationToken,可以用来取消获取锁。返回的任务在获取时LockAsync将进入Completed状态AsyncLock。Canceled如果Cance翻译 2021-01-18 09:43:27 · 3908 阅读 · 0 评论 -
多线程和异步的区别
许多人被教导多线程和异步是同一回事,但事实并非如此。类比通常会有所帮助。您在餐厅做饭。订购鸡蛋和吐司。同步:先煮鸡蛋,再煮吐司。 异步单线程:开始煮鸡蛋并设置计时器。您开始烤面包,并设置一个计时器。他们俩都在做饭时,您要打扫厨房。计时器关闭后,您将鸡蛋和干面包从烤面包机中取出并送达。 异步,多线程:您再雇用两名厨师,一名厨师煮鸡蛋,一名厨师烤面包。现在您需要协调厨师,以便他们在共享资源时不会在厨房互相冲突。而且你必须付钱。现在,多线程仅仅是异步的一种有意义吗?线程是关于工人的。异步是关于任.转载 2020-07-08 18:06:51 · 675 阅读 · 0 评论 -
C#–异步/等待(第1部分)
没有什么能像完成一半的任务那样致命。在接下来的系列文章中,我将介绍C#语言的新功能之一-Async / Await。我将从破坏与该编码模式通常相关的两个神话开始。任务与线程不同。 调用异步方法并不自动意味着将创建一个新线程。许多IO方法使用低级I / O请求数据包和中断来管理操作,而无需新线程。有关更多信息,请参见Stephen Cleary的博客文章。但是,异步方法可能在与其调用的线程不同的线程上返回。这对于WPF之类的平台尤其重要,在该平台上,对控件或其他类(例如ObservableCol.翻译 2020-07-02 22:28:59 · 998 阅读 · 0 评论 -
通过示例TASKCOMPLETIONSOURCE
在本文中,我们将学习如何使用TaskCompletionSource。它是您几乎不需要使用的那些工具之一,但是当您这样做时,您会很高兴知道它。让我们深入研究它。基本用法本节的源代码位于Gigi Labs BitBucket存储库的TaskCompletionSource1文件夹中。让我们创建一个新的控制台应用程序,在中Main(),我们将具有在控制台应用程序中运行异步代码的常用解决方法: 1个 2 3 4 5 stat翻译 2020-06-24 13:33:37 · 1579 阅读 · 0 评论 -
并发可视化器
并发可视化工具是可视化工作室的可选扩展。从以下链接下载并发可视化工具和并发可视化工具:下载可视化工作室 2019 扩展的并发可视化工具。 下载可视化工作室 2017 扩展的并发可视化工具。 下载可视化工作室 2015 扩展的并发可视化工具。 下载视觉工作室 2015 的并发可视化工具收集工具。"并发可视化工具"命令行实用程序 (CVCollectionCmd)允许您从命令行收集跟踪,...翻译 2020-05-04 09:44:29 · 287 阅读 · 0 评论 -
C#多线程:CountdownEvent-线程完成数
原文地址:目录解决一个问题 CountdownEvent 类 构造函数和方法 示例 解决一个问题假如,程序需要向一个 Web 发送 5 次请求,受网路波动影响,有一定几率请求失败。如果失败了,就需要重试。示例代码如下: class Program { private static int count = 0; s...转载 2020-04-20 09:15:29 · 760 阅读 · 0 评论 -
该类型的 CollectionView 不支持从调度程序线程以外的线程对其 SourceCollection 进行的更改。
ObservableCollection类型---该类型的 CollectionView 不支持从调度程序线程以外的线程对其 SourceCollection 进行的更改。解决方案ThreadPool.QueueUserWorkItem(delegate { SynchronizationContext.SetSynchron......转载 2020-04-20 08:45:47 · 7677 阅读 · 0 评论 -
C#控制多线程最大并行数量
转载 2020-04-14 17:29:07 · 1321 阅读 · 0 评论 -
MvvmLight中CheckBeginInvokeOnUI方法解析,以及重写
1、CheckBeginInvokeOnUI的作用在UI线程上执行操作。 如果从UI线程调用此方法,即刻执行该动作。 如果从另一个线程调用该方法,则该操作将排队在UI线程的分派器上并异步执行。 对于UI线程的其他操作,多亏了GalaSoft.MvvmLight.Threading.DispatcherHelper.UIDispatcher属性,您可以获得对UI线程的分派器的引用。2、使用方...原创 2019-12-04 09:19:58 · 1288 阅读 · 0 评论 -
WPF异步任务阻止UI
XAML:<Button Name="_button" Click="ButtonBase_OnClick"> Click</Button> CSprivate void ButtonBase_OnClick(object sender, RoutedEventArgs e){ _button.IsEnabled...转载 2019-05-29 09:56:58 · 599 阅读 · 0 评论 -
浅谈C#单例模式的实现和性能对比
这篇文章主要介绍了浅谈C#单例模式的实现和性能对比的相关资料,详细的介绍了6种实现方式,需要的朋友可以参考下简介单例指的是只能存在一个实例的类(在C#中,更准确的说法是在每个AppDomain之中只能存在一个实例的类,它是软件工程中使用最多的几种模式之一。在第一个使用者创建了这个类的实例之后,其后需要使用这个类的就只能使用之前创建的实例,无法再创建一个新的实例。通常情况下,单例会在第一次被...转载 2019-03-08 14:33:33 · 642 阅读 · 0 评论