synchronizationcontext相关内容

如何获取使用 SynchronizationContext 的任务?以及如何使用 SynchronizationContext 呢?

我仍在学习整个任务概念和 TPL.根据我目前的理解,await 使用 SynchronizationContext 函数(如果存在)来分派任务“某处".另一方面,Task 类中的函数不使用上下文,对吗? 因此例如 Task.Run(...) 将始终在线程池的工作线程上分派操作并完全忽略 SynchronizationContext.Current.await Foobar() 会在 awai ..
发布时间:2021-12-27 23:45:16 C#/.NET

使用 SynchronizationContext 将事件发送回 WinForms 或 WPF 的 UI

我正在使用 SynchronizationContext 将事件从执行大量多线程后台任务的 DLL 编组回 UI 线程. 我知道单例模式不是我最喜欢的,但我现在使用它来在您创建 foo 的父对象时存储 UI 的 SynchronizationContext 的引用. 公共类Foo{公共事件 EventHandler FooDoDoneEvent;公共无效 DoFoo(){//东西OnFoo ..
发布时间:2021-12-05 17:21:56 C#/.NET

使用应用程序域时无法设置同步上下文

我有一个自定义框架,其中主机应用程序运行事件循环并将来宾应用程序加载到单独的应用程序域中.来宾应用程序可以通过提供的 API 来利用事件循环.我想让来宾应用程序能够自动将所有延续传播到事件循环中,就像在 .NET GUI 应用程序和 UI 线程中所做的那样.因此,我创建了一个能够做到这一点的自定义同步上下文. 但问题是我无法开始使用这个新上下文.每当我尝试设置它时,它都会在下一个跨应用域边界 ..
发布时间:2021-11-16 19:16:31 C#/.NET

Task.Delay 的同步上下文

我发现,Task.Run 总是在来自 .NET Framework 线程池 (TaskScheduler.Default) 的线程上执行.我想,它与 Task.Delay 相同,但我不确定. MSDN 表示 Task.Delay 仅: 创建一个将在一段时间延迟后完成的任务 因此问题:Task.Delay在哪里(在哪个同步上下文中)运行? 解决方案 Task.Delay 不 ..
发布时间:2021-09-04 19:33:32 C#/.NET

使用Appdomain时无法设置同步上下文

我有一个自定义框架,宿主应用程序在其中运行事件循环,并将来宾应用程序加载到单独的应用程序域中.来宾应用程序具有通过提供的API利用事件循环的方法.我希望使来宾应用程序能够像在.NET GUI应用程序和UI线程中一样,将所有连续性自动传播到事件循环中.因此,我创建了一个能够做到这一点的自定义同步上下文. 但是问题是我无法开始使用这个新上下文.每当我尝试设置它时,它将在应用程序域边界的下一个回调 ..
发布时间:2020-07-24 08:30:44 C#/.NET

异步/等待死锁

假设我正在编写一个自定义MVC过滤器,该过滤器在方法覆盖中执行一些异步调用,如下所示: public class MyActionFilter : System.Web.Mvc.ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext ctx) { var stuff ..
发布时间:2020-06-21 19:19:41 C#/.NET

如何修复具有SynchronizationContext的线程池线程上的死锁?

使用HttpClient发送http请求时,我遇到间歇性的死锁,有时它们从不返回我的代码中的await SendAsync.我能够弄清楚在HttpClient/HttpClientHandler中内部处理请求的线程由于某种原因在死锁期间有一个SynchronizationContext.我想弄清楚正在使用的线程如何以SynchronizationContext结尾,而通常情况下它们没有一个.我会假 ..

如何解释等待/异步同步上下文切换行为

我对以下代码的行为有几件事情(但有一件主要的事情)我不了解. 有人可以帮忙解释一下吗? 这实际上是非常简单的代码-只是一个调用异步方法的常规方法.在异步方法中,我使用using块尝试临时更改SynchronizationContext. 在代码的不同点,我探究了当前的SynchronizationContext. 这是我的问题: 当执行到达位置"2.1"时,上下文已更 ..
发布时间:2020-06-21 18:58:22 C#/.NET

可以在.net 2.0上下文中使用的Dispatcher类(从.net 3.0开始)的替代方法

我需要 Dispatcher (.net 3.0)用于Windows服务(在.net 2.0中完成).您能给我一些想法如何实现类似目标或为我指出一些链接吗? 我知道调度程序后面有SynchronizationContext,但是我不知道如何在服务中使用SynchronizationContext. 如果您认为我应该坚持使用Dispatcher(.net 3.0)...如何操作它(OnS ..